দেখে মনে হচ্ছে কফিস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে শেষ আইটেমটিকে স্কোপে ফিরিয়ে দেয়। আমি কি এই কার্যকারিতা এড়াতে পারি?
দেখে মনে হচ্ছে কফিস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে শেষ আইটেমটিকে স্কোপে ফিরিয়ে দেয়। আমি কি এই কার্যকারিতা এড়াতে পারি?
উত্তর:
আপনাকে স্পষ্টভাবে কিছুই ফিরিয়ে দিতে হবে না, বা আপনার ফাংশনটির নীচের অংশে অবধারিত হিসাবে মূল্যায়ন করে একটি অভিব্যক্তি রেখে যেতে হবে:
fun = ->
doSomething()
return
বা:
fun = ->
doSomething()
undefined
বোধগম্যতা ব্যবহার করার সময় ডক এটির পরামর্শ দেয়:
সাবধান হোন যে আপনি দুর্ঘটনাক্রমে এই ক্ষেত্রে বোঝাপড়ার ফলাফলগুলি ফিরিয়ে না নিচ্ছেন, অর্থপূর্ণ রিটার্ন মান - সত্য - বা নাল দ্বারা যুক্ত করে আপনার ফাংশনের নীচে ।
আপনি যাইহোক, এইভাবে একটি র্যাপার লিখতে পারেন:
voidFun = (fun) ->
->
fun(arguments...)
return
( স্প্লট অপারেটরটি এখানে লক্ষ করুন ( ...
))
এবং কার্যকারিতা সংজ্ঞায়িত করার সময় এটি ব্যবহার করুন:
fun = voidFun ->
doSomething()
doSomethingElse()
বা এই মত:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return
, undefined
অথবা null
আমার ফাংশন শেষে। যাইহোক, যুক্ত করা null
কোনও কারণে আমার কাছে ভুল বলে মনে হচ্ছে। আমি কি এই তিনটির মধ্যে সবচেয়ে খারাপ পছন্দটি ধরে নেব?
undfined
শেষে একটি রেখে যাওয়া। একটি খালি return
স্টেটমেন্ট ব্যবহার করে প্রত্যাবর্তনকে আরও ভাল কিছু বলে মনে হয় যে undefined
ফাংশন শেষে একটি রেখে যায়, তাই খালিটি return
আরও ভাল বিকল্প বলে মনে হয়।
fun(arguments...)
, কল করা ভাল হবে fun.apply(this, arguments)
।
হ্যাঁ, return
কোনও ফাংশনের শেষ লাইন হিসাবে।
উদাহরণ স্বরূপ,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
আপনি যদি কফিটি কীটি সংকলন করে তা দেখতে চান তবে http://bit.ly/1enKdRl ব্যবহার করে দেখুন । (আমি আমার উদাহরণের জন্য কফিস্ক্রিপ্ট রিডেক্স ব্যবহার করেছি)
মজাদার কিছু (সেশনাল)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
নিজেই একটি ফাংশন যা সর্বদা কিছুই ফিরিয়ে দেয় না। আপনি এই রিটার্ন মানটি এই ব্ল্যাকহোলটিতে পাইপ করার জন্য আপনি রচনাটি ব্যবহার করতে পারেন এবং রচিত ফাংশনটি কখনই কোনও কিছুই ফেরত পাবে না।
দেখে মনে হচ্ছে কফি স্ক্রিপ্টের ফাংশনগুলি অবশ্যই সর্বদা কিছু ফিরিয়ে আনবে null
। সি তে, আপনার কাছে void
রিটার্ন টাইপ রয়েছে।
->
, খালি ফাংশনটি সংকলন করে (function() {})
, তাই এটি কেবলমাত্র ফাংশন যা কোনও কিছুই ফেরায় না।
return;
একটি অকার্যকর মান ফেরত দিতে সি, জাভাস্ক্রিপ্ট এবং কফিস্ক্রিপ্টে কাজ করে।