পাইথন ভাবেনদের জন্য:
স্কালার _*
অপারেটর কম-বেশি পাইথনের * -অপরেটারের সমতুল্য ।
উদাহরণ
লুইজি প্লিংজের সরবরাহিত লিঙ্কটি থেকে স্কেল উদাহরণটি রূপান্তর করা :
def echo(args: String*) =
for (arg <- args) println(arg)
val arr = Array("What's", "up", "doc?")
echo(arr: _*)
পাইথনের মতো দেখতে:
def echo(*args):
for arg in args:
print "%s" % arg
arr = ["What's", "up", "doc?"]
echo(*arr)
এবং উভয়ই নিম্নলিখিত আউটপুট দেয়:
কি
আপ
ডক?
পার্থক্য: অবস্থানগত পরামিতিগুলি আনপ্যাক করা
যদিও পাইথনের *
অপারেটর স্থির-তুরস্কের ফাংশনগুলির জন্য অবস্থানগত পরামিতি / পরামিতিগুলি আনপ্যাকিংয়ের সাথেও মোকাবিলা করতে পারে:
def multiply (x, y):
return x * y
operands = (2, 4)
multiply(*operands)
8
স্কালার সাথে একই করছেন:
def multiply(x:Int, y:Int) = {
x * y;
}
val operands = (2, 4)
multiply (operands : _*)
ব্যর্থ হবে:
পদ্ধতিটির গুণনের জন্য পর্যাপ্ত আর্গুমেন্ট নেই: (x: Int, y: Int) Int
অনির্ধারিত মান প্যারামিটার y।
তবে স্কেল দিয়ে এটি অর্জন করা সম্ভব:
def multiply(x:Int, y:Int) = {
x*y;
}
val operands = (2, 4)
multiply _ tupled operands
লরিন নেলসনের মতে এটি এইভাবে কাজ করে:
প্রথম অংশ, f _, একটি আংশিক প্রয়োগ ফাংশনটির বাক্য গঠন যা কোনও আর্গুমেন্ট নির্দিষ্ট করা হয়নি। এটি ফাংশন অবজেক্টটিকে ধরে রাখতে একটি প্রক্রিয়া হিসাবে কাজ করে। দ্বিখণ্ডিত একটি নতুন ফাংশন প্রদান করে যা আধ্যাত্মিকতা -১ এর একক আরটি-এন টিপল নেয়।
আরও পঠন:
def sum(xs: _*)
থ্রো 'ত্রুটি: আনবাউন্ড ওয়াইল্ডকার্ড প্রকার'