آموزش كلوژر ٣ - بايندينگ و تعريف فانكشن

clojure
learning_clojure
clojurescript
tutorial

#1

سلام دوستان تو اين آموزش كلوژر ميخوايم راجع به ديتا بايندينگ و تعريف فانكشن ها صحب كنيم

قبل از اینکه شروع کنیم بد نیست بدونید که، اگر نیاز به REPL انلاین دارید و می خواین کد های این قسمت رو تست کنید می تونین از این REPL استفاده کنین. فقط نکته ای که باید بهش توجه کنید این هست که این REPL در واقع clojurescript هست و ممکن هست بعضی از نتایج با REPL کلوژر متفاوت باشه.

بایندینگ (Binding)

از اونجايي كه احتمالا ميدونين كلوژر يه زبون با ساختار هاي داده ي غير قابل تغيير يا immutable هست پس ديتا هايي كه تعريف ميشن ديگه قابل تغيير نيستن به همين خاطر تو كلوژر از كلمه اي مثل متغير ها استفاده نمي كنيم و به جاش از كلمه ي بايندينگ ( binding ) استفاده مي كنيم فكر كنم يك مثال كوچيك بتونه كمك كنه

(def myname "alireza")

خب تو مثال بالا ما يه ديتا داريم كه يه استرينگه و myname رو به اون بايند مي كنيم درواقع يعني از اين به بعد از طريق اين اسم به اين ديتا دسترسي داريم .

فانکشن ها

مبحث بعدی این هست که ما تو کلوژر چطوری یه فانکشن تعریف کنیم و از اون استفاده کنیم قبل از اینکه کد رو ببینیم یه نکته وجود داره و اون این هست که در کلوژر فانشکن هیچ فرقی با سایر دیتا تایپ های مثل استرینگ نداره اما بریم سراغ کد:

(defn sum [x y]
  (+ x y))

خب تو کد بالا ما اول به کمک کلمه defn یه فانکشن تعریف کردیم که دو تا ورودی میگیره به اسم x و y و جمع دو ورودی رو محاسبه می کنه و برمیگردونه . البته دقت داشته باشین که defn در واقع یه شرتکات برای تعریف فانکشن هست و تعریف فانکشن تو کلوژر مثل هر بایندینگ دیگه هست یعنی همین فانشکن بالا در واقع به این صورت نوشته میشه

(def sum (fn [x y] (+ x y)))

میبینید مثل کد اول که ما یه استرینگ رو به اسم بایند کردیم اینجا یه فانکشن رو بایند کردیم پس تفاوت خاصی وجود نداره بین فانکشن ها و بقیه دیتا تایپ ها .
خروجی کد اول با کد دومی تعریف فانکشن ها تفاوتی نداره اما حالا چطوری این فانکشن ها استفاده کنیم
5 <== (sum 2 3)
طبق قانون کلوژر( البته قانون همه لیسپ ها :wink:) اولین عضو هر لیست اسم فانکشن و بقیه اعضا ارگومان های اون تابع هستن اینجا هم اولین عضو که sum هست در واقع اسم فانشکنی هست که تعریف کردیم و ۲ و ۳ ارگومان ها .

خب امیدوارم که آموزش براتون مفید بوده باشه حتما اگر پیشنهادی یا نظری دارین هم برام بنویسین پیشاپیش ممنون .


آموزش کلوژر ۴ - توابع بی‌نام
رهنمای شروع برنامه نویسی با کلوژر ( Clojure )
#2

خیلی هم عالی. دستت درد نکنه. یه خرده مارکداونت رو اصلاح کردم. بد نیس یه نگاه بندازی


#3

خیلی ممنون اتفاقا یه خرده با مارک داون مشکل دارم کلا .


#4

اینجا دوست عزیز می تونید سریع بهش دست پیدا کنید
https://guides.github.com/features/mastering-markdown/


#5

ممنون از آموزش خوب.
بله، متاسفانه دیدم که در رفرنس بعضی از زبان های برنامه نویسی فانکشنال مثل الیکسر از واژه متغیر استفاده شده که اصلا درست نیست و‌مفهوم درست فدای سادگی در آموزش شده.