مقدمات سکالا
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"