آموزش زبان برنامه‌نویسی V – بخش اول

به نام خدا… سلام!

تازگیا درباره زبان V یا Vlang مطالعه کردم و اینطور که معلومه خیلی زبان جالبیه… ولی توی سایت‌های فارسی چیزی ازش ننوشته‌بودن. گفتم من بنویسم!

لوگوی V روی کد gitly که یه جایگزین کم‌حجم برای گیت‌هابه
لوگوی V روی کد gitly که یه جایگزین کم‌حجم برای گیت‌هابه
برای شما

مطالبی که نوشتم همه (و همچنین ترتیب‌شون) مستقیم از مقالات زبان V برداشته‌شده به این نشانی:

https://github.com/vlang/v/blob/master/doc/docs.md

v/docs.md at master · vlang/v
v/docs.md at master · vlang/v
Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. https://vlang.io – v/docs.md at master · vlang/v

امیدوارم لذت ببرین:

سلام دنیا!

123fn main() {
    println('hello world')
}

خب اینجا که فکر نمیکنم توضیح خاصی نیاز باشه. فقط چند تا نکته:

  • کلیدواژه تابع function نیست بلکه fn هست.
  • برای چاپ یک خط از println و برای چاپ بدون رفتن به خط بعد از print استفاده میکنیم.
  • مثل زبان C یه تابع اصلی داریم به نام main و برنامه از اونجا شروع میشه.
  • یه استثناء برای مورد قبل وجود داره… اگه برنامه‌تون فقط یه فایله میتونین بجای تابع main کدتون رو همینجوری بنویسین.
  • رشته‌ها رو هم میتونین با علامت " هم با علامت ' مشخص کنین.

کامنت‌ها

1234// This is a single line comment.
/* This is a multiline comment.
   /* It can be nested. */
*/
  • شکل کامنت‌ها مثل زبان‌های خانواده سی هست.
  • یکی از نکات جالب این زبان این هست که میتونین داخل کامنت‌های چند‌خطی کامنت‌های چند‌خطی دیگه هم بزارین! یعنی با پایان کامنت درونی، کامنت بیرونی بسته نمیشه.

توابع

12345678910fn main() {
    println(add(77, 33))
    println(sub(100, 50))
}
fn add(x int, y int) int {
    return x + y
}
fn sub(x, y int) int {
    return x - y
}

یکی از نکات خیلی مهم این زبان که اینجا معلوم میشه این هست که

  • نوع متغیر‌ها و تابع‌ها برعکس خیلی از زبان‌های خانواده سی، بعد از نام نوشته‌میشه!

برگرداندن چند مقدار از تابع

1234567fn foo() (int, int) {
    return 2, 3
}
a, b := foo()
println(a) // 2
println(b) // 3
c, _ := foo() // ignore values using `_`

خب میبینید که میشه از یه تابع، چند مقدار رو برگردوند.

  • متغیر‌ها با عملگر =: تعریف و مقداردهی میشن.
  • مثل پایتون میتونیم دو تا متغیر رو همزمان با یه آرایه مقداردهی کنیم.
  • میتونیم با نام _ از اشغال حافظه توسط مقادیر غیر‌الزامی جلوگیری کنیم.

تعداد متغیر آرگومان‌ها

12345678910fn sum(a ...int) int {
    mut total := 0
    for x in a {
        total += x
    }
    return total
}
println(sum())    // Output: 0
println(sum(1))   //         1
println(sum(2,3)) //         5
  • یکی از نکات عجیب این زبان متغیر نبودن متغیر هاست! منظورم از متغیر اولی این هست که نمیشه تغییرشون داد.
  • برای تعریف متغیر متغیر (!)، قبل از اسم متغیر یه mut میزاریم.
  • مثل زبان جاوااسکریپت میتونیم با سه تا نقطه تعداد آرگومان‌ها رو متغیر کنیم. البته توی این زبان باید این سه تا نقطه رو قبل از نوع آرگومان بنویسیم. اینطوری اون آرگومان تبدیل به یه آرایه میشه.

توابع عمومی

1234pub fn public_function() {
}
fn private_function() {
}

درباره ماژول ها بعداً بیشتر میخونیم. الان در این حد بدونید که اگه میخواین توی ماژول های دیگه از همین تابع استفاده کنین باید قبل fn یه‌دونه pub هم بزارین.

متغیر‌ها

123456name := 'Bob'
age := 20
large_number := i64(9999999999)
println(name)
println(age)
println(large_number)
  • متغیر‌ها همیشه باید مقدار اولیه داشته‌باشن. حتی متغیر‌های غیر‌قابل‌تغییر.
  • متغیر‌ها به نوع حساس هستن ولی نوعشون نوشته‌نمیشه چون از مقداری که میدین مشخص میشه.
  • اگه میخواین مقداری بدین که از نوعی که میخواین متغیر داشته‌باشه نیست (اما باهاش سازگاره) فقط باید اسم اون نوع رو مثل یه تابع با مقدار دلخواه به‌عنوان آرگومان بنویسین. مثل خط ۳ کد بالا.
  • استاندارد اسم متغیر‌ها ماری (snake_case) هست یعنی از حروف کوچک و زیر‌خط (underscore) بین کلمات تشکیل میشه.

متغیر‌های قابل تغییر

1234mut age := 20
println(age)
age = 21
println(age)

همونطور که قبل‌تر گفتم، برای تعریف متغیر هایی که بشه تغییرشون داد، باید قبل از اسم متغیر، کلیدواژه mut رو بنویسیم.

  • به یه تفاوت مهم توجه کنید! متغیر‌ها در تعریف با =: و بعد از اون با = مقداردهی میشن.

تعریف چندباره متغیر

1234567fn main() {
    a := 10
    if true {
        a := 20 // error: shadowed variable
    }
    // warning: unused variable `a`
}
  • اگر متغیری رو تعریف کنین اما استفاده نکنین کامپایلر بهتون هشدار میده.
  • اگر در حالت production باشین کدی که متغیر بی‌استفاده داشته‌باشه اصلاً کامپایل نمیشه (مثل گو).
  • برعکس خیلی از زبان‌های برنامه‌نویسی، نمیتونین متغیری رو در بلوک‌های فرزند دوباره تعریف کنین. اگه همچین کدی رو بنویسین، خطا ایجاد میشه.

خب امیدوارم از این قسمت آموزش زبان v خوشتون اومده‌باشه… بزودی قسمت‌های بعدی رو هم قرار میدم.

خدانگهدار

نویسنده مطلب: اشکان لائی

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.