مقدمات سکالا: 1 متغیرها (variable ) و ارزش ها (value )

scala
tutorial

#1

مقدمات سکالا
Scala زبان functional و شی گرا با type سیستم ستاتیک و strict که روی JVM اجرا میشه

ایده های بزرگ برنامه نویسی functional با سکالا بعد ها مفصل تر در مورد هر کدام صحبت میکنم :
Immutibality : تغییر ندادن داده تا حد ممکن
Referential Transparency : خلوص توابع به صورتی که جایگذین کردن بدنه تابع با خوده تابع برنامه را تغییر نده
Composition : قابلیت ترکیب توابع و برنامه با برنامه های دیگر
Algebra vs Implementation : جدایی جبر برنامه از مفسر برنامه
Make Illegal State Unrepresentable: حالت های غیر قانونی برنامه میبایست غیر قابل بیان شوند و درستی برنامه در زمانه compile باید آشکار باشه

مقدمه:
متغیرها (variable ) و ارزش ها (value )
متغیرها همین طور که از اسمشون پیداست تغییر پذیرند:

var hello: String = "Hi"
hello = "hello" 

در سینتکس بالا بعد : type متغیر نوشته شده با اینکه نوشتن type توصیه میشه در ساخته متغیر یا ارزش این ضروری نیست و compiler
در اکثر موقع ها میتونه نوع داده تشخیص بده
Type Inference

var hello = "Hi"

چون متغیر ها تغییر میتونن بکنن و قانون immutability پیروی نمیکن از استفاده آنها خود داری کنید بجای آنها از
ارزش ها استفاده کنید

val hello:String = "Hello"

class ها و object ها
کلاس ها مانند زبان های شی گرا ساخته میشوند که میتونن داخلشون ارزش یا متود داشته باشند ارزش ها به محضه ساخته شدنه کلاس ارزیابی میشوند ولی متود ها زمانه فراخوانی ارزیابی میشوند type آرگومان های متود همیشه باید نوشته بشه

class Scientist(firstName: String, lastName: String) {
  val something = "Something"

  def greet: Unit = {
    println("hello" + firstName + " " + lastName)
  }

  def giveFood(food: String) : Unt = println("Yum " + food)
}

val alan = new Scientist("Alan", "Turing") 
alan.greet
alan.giveFood("Pizza")

object ها شبیه static object های جاوا هستند و هر متود روی خوده object قرار میگیره

object Scientist {
  def saySomething = "Something"
}

Scientist.saySomething
// "Something"

مقدمات سکالا
#2

عالیه. دستت درد نکنه. عالی میشه اگه یه پست به عنوان فهرست بسازی که دسترسی به همه آموزش ها آسون بشه و بتونیم پین کنیم اون پست رو.


#3

سمیر جان در این لینک سام عزیز درست کردند موردی که شما فرمودی :


#4

عالیه. سرمنده کم دقتی کردم. ممنونم.


#5

ببخشید من حرفه ای دیسکرس بلد نیستم نمیدونستم چطوری سنجاق کنم