কফিস্ক্রিপ্ট টিউটোরিয়ালে "স্প্লেটস" এর অর্থ কী?


114

এই কফিস্ক্রিপ্ট টিউটোরিয়ালটি দেখুন: http://jashkenas.github.com/c کافی- script/

স্প্ল্যাটসের জন্য কী তা আমি পুরোপুরি দেখতে পাই না। এই নির্মাণ কি? এটি কোথা থেকে এসেছে (icallyতিহাসিকভাবে)


বরাবরের মতই আপনার কাছে জানা উচিত কিভাবে এটি ভ্যানিলা Js বাস্তবায়িত করা যেতে পারে: arguments+ + call: stackoverflow.com/questions/17380315/...
সিরো Santilli郝海东冠状病六四事件法轮功

1
আমি এটিকে এমন একটি পরামিতি হিসাবে ভাবতে চাই যা "স্প্ল্যাটেড" (পেইন্টের মতো) অনির্দিষ্টকালের ধারাবাহিকতায় পরিণত হয়
arviman

3
পাইথন-প্রবণ কারও জন্য: এটি আপনার *argsমধ্যে def foo(*args):
ম্যালিগ্রি

1
পরিভাষা নোট: ES6 অনুরূপ তবে উপসর্গ বাক্য গঠন গ্রহণ করেছে। ES6 গ্রহণ করতে , ...argsনামকরণ করা হয় বাকি পরামিতি এবং বিস্তৃত ...argsএকটি ফাংশন কল / অ্যারের / বস্তু আক্ষরিক মধ্যে নামকরণ করা হয় বিস্তার
বেনি Cherniavsky-Paskin

উত্তর:


199

"স্প্ল্যাট অপারেটর" শব্দটি রুবি থেকে এসেছে, যেখানে একটি *অক্ষর (কখনও কখনও "স্প্ল্যাট" বলা হয় - জারগন ফাইল এন্ট্রি ) বলা হয় যে একটি যুক্তি তালিকায় একটি এন্ট্রি আর্গুমেন্টের একটি তালিকা "ভিজিয়ে" রাখা উচিত।

CoffeeScript রুবি শৈলী splats গৃহীত খুব উপর (দেখুন গোড়ার দিকে ইস্যু 16 ), কিন্তু ডগলাস Crockford এর পরামর্শ এ, সিনট্যাক্স থেকে পরিবর্তন করা হয়েছে *xথেকে x...পরে কয়েক সপ্তাহ (দেখুন ইস্যু 45 )। তবুও, কফি স্ক্রিপ্টারগুলি এখনও সিনট্যাক্সটিকে "স্প্ল্যাট" বা "স্প্ল্যাট অপারেটর" হিসাবে উল্লেখ করে।

তারা আসলে কী করে, স্প্ল্যাটগুলি argumentsবস্তুকে এমনভাবে টুকরো টুকরো করে ছড়িয়ে দেয় যে স্প্ল্যাটেড আর্গুমেন্ট সমস্ত "অতিরিক্ত" যুক্তিগুলির অ্যারে হয়ে যায়। সবচেয়ে তুচ্ছ উদাহরণ

(args...) ->

এই ক্ষেত্রে, argsকেবল একটি অ্যারে অনুলিপি হবে arguments। স্প্ল্যাটেড আর্গুমেন্টগুলি আগে, পরে বা স্ট্যান্ডার্ড আর্গুমেন্টের মধ্যে আসতে পারে:

(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->

প্রথম দুটি ক্ষেত্রে, যদি ফাংশনটি 0-1 টি আর্গুমেন্ট গ্রহণ করে তবে এটি restএকটি ফাঁকা অ্যারে হবে। শেষ ক্ষেত্রে, ফাংশনটি restখালি না থাকার জন্য 2 টিরও বেশি আর্গুমেন্ট গ্রহণ করা দরকার।

যেহেতু জাভাস্ক্রিপ্ট একই নামের সাথে ফাংশনগুলির জন্য একাধিক স্বাক্ষর অনুমোদন করে না (সি এবং জাভা কীভাবে), তাই স্প্ল্যাটগুলি বিভিন্ন সংখ্যক আর্গুমেন্টের সাথে ডিল করার জন্য একটি বিশাল সময়-সঞ্চয়কারী।


2
সি # paramsকীওয়ার্ডের মতো।
থ্যাটম্যাথেজ

আমার কখন এটি ব্যবহার করা দরকার?
জেফ স্কট ওয়ার্ড

1
আপনি যে প্যারামগুলি গ্রহণ করতে চান তার সংখ্যার বিষয়ে যখন অনিশ্চিত হন।
gprasant

1
প্রযুক্তিগতভাবে [বৈকল্পিক ফাংশন] ( en.wikedia.org/wiki/Variadic_function ), বা অনির্দিষ্ট "arity" এর একটি ফাংশন হিসাবে পরিচিত । বেশিরভাগ ভাষা পরিবর্তনশীল আর্গুমেন্টগুলি নির্দেশ করতে কোনও ধরণের উপবৃত্তাকার ফর্ম ব্যবহার করে।
লরেন্স ডল

1
@ জেফস্কটওয়ার্ড একটি নিখুঁত উদাহরণ কনসোল.লগ, এটি যে কোনও সংখ্যক যুক্তি গ্রহণ করে। console.log('this:',variable,'should be replaced with', another_variable);
রব

13

আপনি যদি অজগর জানেন তবে args...প্রায় একই রকম *args, এটি আপনাকে ফাংশন পরামিতিগুলি তালিকা হিসাবে চিকিত্সার অনুমতি দেয়

উদাহরণ স্বরূপ:

concat = (args...) -> args.join(', ')
concat('hello', 'world') == 'hello, world'
concat('ready', 'set', 'go!') == 'ready, set, go!'

এটি অনুমানগুলিতেও কাজ করে:

[first, rest...] = [1, 2, 3, 4]
first == 1
rest == [2, 3, 4]

6

স্প্রেটসটি হ'ল ...ভার- আরগগুলির জন্য অপারেটরটির ব্যবহারের জন্য (আর্গুমেন্টগুলির একটি পরিবর্তনশীল সংখ্যার ফাংশন)।


আরও দেখুন: পাইথনের * আরগস এবং ** কাওয়ার্গস এবং অ্যাকশনস্ক্রিপ্ট 3 এর বাকি প্যারামিটার।
জর্ডান

3

আমি মনে করি এটি জাভাস্ক্রিপ্টের আর্গুমেন্ট অবজেক্টের জন্য একটি সিনট্যাকটিক চিনি।

ধারণাটি রুবির স্প্লট অপারেটর* রূপে আসতে পারে ।


টেকনিক্যালি, এটি একটি সামান্য বিট আরো কি, যেমন ব্যবহার করতে পারেন বরাদ্দকরণ মধ্যে বাঁদিকের পার্শ্বযুক্ত, এবং নামে আর্গুমেন্ট সঙ্গে মিলিত হতে পারে: এ (x, rest...) ->, restধারণ অভ্যস্ত x, argumentsআছে।
কেপলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.