رفتن به مطلب

B4A v11.0 BETA منتشر شد...


Salar82

ارسال‌های توصیه شده

سلام به همه دوستان

بالاخره ورژن 11 بیسیک هم منتشر شد. یسری تغییرات جالبی داشته مثل اضافه شدن دستور IIf (inline If) و As (یا همون Cast کردن خودمون :))

 

  • حالا IIf چیه؟

کد زیر رو ببینید:

Label1.Text = IIf(EditText1.Text <> "", EditText1.Text, "Please enter value")

فرض کنید تو اکتیویتی یه ادیت تکست داریم و یدونه لیبل؛ اونوقت می‌خوایم با زدن یه دکمه، چکمه کنیم که اگر ادیت تکست متن داشت، خب همونو بذاره تو لیبل؛ اگر هم نداشت، یه پیغام اخطار بده بگه لطفا متن را وارد کنید. قبلا اگر می‌خواستیم چنین چیزی رو پیاده کنیم، باید مثل زیر می‌نوشتیم:

If EditText1.Text <> "" Then
		Label1.Text = EditText1.Text
Else
		Label1.Text = "Pleas enter value"
End If

 

حالا دستور IIf هم دقیقا همین کار رو می‌کنه. به پارامت‌هاش توجه کنید:

Sub IIf (Condition As Boolean, TrueValue As Object, FalseValue As Object) As Object
		If Condition = True Then Return TrueValue Else Return FalseValue
End Sub

طبق این، تو پارامتر اول یه شرط رو می‌ذاریم. حالا اگر اون شرط درست بود، پارامتر دوم رو برمی‌گردونه، اگر هم شرطمون صدق نکرد، پارامتر سوم رو برمی‌گردونه...

 

خیلی ساده و تمیز :)

 

  • حالا As چیه؟

فرض کنید یه لیست به شکل زیر تعریف کردین و چندتا دکمه رو داخلش قرار دادین.

Dim Buttons As List = Array(Button1, Button2, Button3, Button4, Button5)

 

حالا می‌خواین دکمه رو به B4XView تبدیل (Cast) کنید و بعد از خصوصیاتش استفاده کنید. قبلاً برای انجام این کار به شکل زیر انجامش می‌دادیم:

Dim B4xView As B4XView = Buttons.Get(0)
Dim str1 As String = B4xView.Text

 

اما الان با دستور As بدون اینکه متغیری تعریف کنید، میشه اینکار رو تو یه خط به شکل زیر انجام داد:

Dim str As String = Buttons.Get(0).As(B4XView).Text

اینجا دیگه نیومدیم یه متغیر جدا تعریف کنیم و .... با دستور As به کامپایلر می‌فهمونیم این متغیری که داریم ازش استفاده می‌کنیم (Buttons.Get(0)) از نوع B4XView قراره باشه.

 

بیاین یه کاربرد دیگه رو از As بگیم:

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

{
"data": {
"key1": "value1",
"complex_key2": {"key": "value2"}
},
"items": [0, 1, 2]
}

(اگر می‌خواین جیسون بالا رو بهتر درک کنید، متن بالا رو تو سایت https://jsoneditoronline.org/#left=local.pedawi&right=local.navowe قرار بدید تا قابل درک‌تر بشه :))

 

خب قبلا اگر می‌خواستیم به مقدار (value2) دسترسی پیدا کنیم، باید چندین متغیر ایجاد می‌کردیم و چندین خط کد می‌نوشتیم. اما حالا با یه خط کد میشه اینکار رو انجام داد:

Dim parser As JSONParser
parser.Initialize(j)
Dim m As Map = parser.NextObject 'تا اینجا که مثل قبله'

Dim value2 As String = m.Get("data").As(Map).Get("complex_key2").As(Map).Get("key")

اینجا هم مثل بالا یه کامپایلر می‌فهمونیم که فرضا متغیر m.Get("data") خودش از نوع Map هست و به همین شکل تا آخر کار ادامه می‌دیم.

 

الان می‌خوایم آرایه‌ی Items رو نشون بدیم قبلا اینطور انجام می‌شد:

Dim parser As JSONParser
parser.Initialize(j)
Dim m As Map = parser.NextObject

Dim l As List = m.Get("items")

For Each item As Int In l
    Log(item)
Next

 

اما از نسخه 11 به بعد:

Dim parser As JSONParser
parser.Initialize(j)
Dim m As Map = parser.NextObject 'تا اینجا تکراریه'

For Each item As Int In m.Get("items").As(List)
    Log(item)
Next

مستقیم میگیم m.Get("items") از نوع لیسته و ازش استفاده می‌کنیم.

 

 

به بزرگی خودتون ببخشید یکم طولانی شد :)

 

لینک دانلود نسخه 11 بتا: https://www.b4x.com/android/files/beta.exe

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون ولی از کد ها چیزی مشخص نیست بخاطر رنگ بندی در نایت مود:bigsmile:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۴/۲۱ در ۲۳:۲۹، DexterFstone گفته است:

ممنون ولی از کد ها چیزی مشخص نیست بخاطر رنگ بندی در نایت مود:bigsmile:

باگه ان‌شاءالله رفع میشه :)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...