Salar82 919 ارسال شده در 21 تیر، ۱۴۰۰ اشتراک گذاری ارسال شده در 21 تیر، ۱۴۰۰ سلام به همه دوستان بالاخره ورژن 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 لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
DexterFstone 396 ارسال شده در 21 تیر، ۱۴۰۰ اشتراک گذاری ارسال شده در 21 تیر، ۱۴۰۰ ممنون ولی از کد ها چیزی مشخص نیست بخاطر رنگ بندی در نایت مود لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Salar82 919 ارسال شده در 22 تیر، ۱۴۰۰ سازنده اشتراک گذاری ارسال شده در 22 تیر، ۱۴۰۰ در ۱۴۰۰/۴/۲۱ در ۲۳:۲۹، DexterFstone گفته است: ممنون ولی از کد ها چیزی مشخص نیست بخاطر رنگ بندی در نایت مود باگه انشاءالله رفع میشه لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.