رشتهها
دوشنبه 29 آذر 1389 7:41 AM
Icon برای حذف عملکرد شبه اسکریپتی خود، قابلیتهایی را برای سهولت کار با رشتهها افزودهاست که قابل توجهترین آنها scanning system است که بطور مکرر در توابع رشتهای فراخوانی میشود :
s ? write(find("the"))
این کد، حالت کوتاه تر مثالهایی است که قبلا نشان داده شد. در این حالت عنوان تابع find در خارج از پارامترها در جلوی علامت سئوال قرار داده میشود.
در زبان Icon چند ویژگی به آن اضافه شدهاست که کارکردن با رشته را آسانتر میکند. بیشترین چیزی که در این زبان جلب توجه میکند، سیستم بررسی رشته آن است که توابع را به صورت پیاپی روی رشته فراخوانی میکند.
s ? write(find("the"))
صورت ساده شده یکی از مثالهای قبلی است. در این جا چیزی که در آن باید تابع find بگردد در بیرون تابع find و قیل از علامت سوال آمدهاست. زیر رشتهها از یک رشته با استفاده از براکت و مشخص کردن بازه به دست کی آیند. یک بازه میتواند به یک کاراکتر از رشته یا یک تکه از رشته اشاره کند. رشتهها میتوانند از راست به چپ یا برعکس index شوند. مهم این است که شمارهٔ این اندیسها میتواند 1A2B3C4 یا -3A-2B-1C0 باشد. برای مثال:
"Wikipedia"[1] ==> "W" "Wikipedia"[3] ==> "k" "Wikipedia"[0] ==> "a" "Wikipedia"[1:3] ==> "Wi" "Wikipedia"[-2:0] ==> "ia" "Wikipedia"[2+:3] ==> "iki"
در آخرین مثال بجای بازه طول آن نشان داده شدهاست.
در این جا چند کار دیگر که با رشتهها میتوان انجام داد را میبینید:
s := "abc" s[2] := "123"
"a123c"مقدار کنونی s است.
s := "abcdefg" s[3:5] := "ABCD"
"abABCDefg" مقدار کنونی s است.
s := "abcdefg" s[3:5] := ""
"abefg" مقدار کنونی s است.