কফিস্ক্রিপ্ট ব্যবহার করে কিছু না ফেরানোর কোনও উপায় আছে কি?


116

দেখে মনে হচ্ছে কফিস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে শেষ আইটেমটিকে স্কোপে ফিরিয়ে দেয়। আমি কি এই কার্যকারিতা এড়াতে পারি?


তুমি কেন চাইবে? আপনি যখন চান ঠিক কি ফেরত মানটি বাতিল করতে পারবেন না?
ক্রিস

11
@ ক্রিস: যখন অর্থবহ রিটার্নের কোনও মূল্য নেই, শেষ বিবরণের ফলস্বরূপ যা কিছু ঘটে তা ফাঁস করা কোনও ভাল ধারণা নয়।

11
@ ক্রিস এতে বোঝার সাথে / যখন লুপগুলির জন্যও পারফরম্যান্সের সাথে জড়িত থাকতে পারে, কারণ লফের রিটার্ন মান ব্যবহার করা হলে (বা এটি কোনও ফাংশনের শেষ প্রকাশ)
আরনাউড লে ব্ল্যাঙ্ক

1
আমি কেবল একটি ঠিকাদারের সাথে এই সমস্যাটি করেছি। আমি কনস্ট্রাক্টরের শেষ লাইনে একটি ফাংশন সংজ্ঞায়িত করেছি। সুতরাং এটি আমার "ক্লাস-ফাংশন" এর পরিবর্তে ফিরে এসেছিল। আমাকে স্পষ্টতই এটি ফিরিয়ে দিতে হয়েছিল। কেবল বলছি, এটি একটি সমস্যা হতে পারে।
মার্কাস

উত্তর:


150

আপনাকে স্পষ্টভাবে কিছুই ফিরিয়ে দিতে হবে না, বা আপনার ফাংশনটির নীচের অংশে অবধারিত হিসাবে মূল্যায়ন করে একটি অভিব্যক্তি রেখে যেতে হবে:

fun = ->
    doSomething()
    return

বা:

fun = ->
    doSomething()
    undefined

বোধগম্যতা ব্যবহার করার সময় ডক এটির পরামর্শ দেয়:

সাবধান হোন যে আপনি দুর্ঘটনাক্রমে এই ক্ষেত্রে বোঝাপড়ার ফলাফলগুলি ফিরিয়ে না নিচ্ছেন, অর্থপূর্ণ রিটার্ন মান - সত্য - বা নাল দ্বারা যুক্ত করে আপনার ফাংশনের নীচে


আপনি যাইহোক, এইভাবে একটি র‍্যাপার লিখতে পারেন:

voidFun = (fun) ->
    ->
        fun(arguments...)
        return

( স্প্লট অপারেটরটি এখানে লক্ষ করুন ( ...))

এবং কার্যকারিতা সংজ্ঞায়িত করার সময় এটি ব্যবহার করুন:

fun = voidFun ->
    doSomething()
    doSomethingElse()

বা এই মত:

fun = voidFun(->
    doSomething()
    doSomethingElse()
)

এই তথ্যবহুল উত্তরের জন্য আপনাকে ধন্যবাদ। আমি বর্তমানে এটি সম্পর্কে ভাবছি কারণ আমি বর্তমানে কফিসক্রিপ্ট শিখছি। আমি কৌতূহল করছি যদি আপনি কোন সেরাটি পছন্দ করেন বা কোনও মান প্রত্যাবর্তন রোধ করার সময় সবচেয়ে খারাপ পছন্দটি হয় তবে কিছুটা আলোকপাত করতে পারেন? বিশেষ করে, আমি অপশন যোগ করার জন্য হয় হয় বলা হয়েছে return, undefinedঅথবা nullআমার ফাংশন শেষে। যাইহোক, যুক্ত করা nullকোনও কারণে আমার কাছে ভুল বলে মনে হচ্ছে। আমি কি এই তিনটির মধ্যে সবচেয়ে খারাপ পছন্দটি ধরে নেব?
স্টেফমিখাইল

2
জাভাস্ক্রিপ্টে রিটার্ন স্টেটমেন্ট (বা একটি খালি রিটার্ন স্টেটমেন্ট) ব্যতীত একটি ফাংশন অপরিজ্ঞাপিত দেয়, তাই সর্বোত্তম বিকল্পটি হয় খালি রিটার্ন যুক্ত করা বা undfinedশেষে একটি রেখে যাওয়া। একটি খালি returnস্টেটমেন্ট ব্যবহার করে প্রত্যাবর্তনকে আরও ভাল কিছু বলে মনে হয় যে undefinedফাংশন শেষে একটি রেখে যায়, তাই খালিটি returnআরও ভাল বিকল্প বলে মনে হয়।
আরনউড লে ব্ল্যাঙ্ক

2
পরিবর্তে fun(arguments...), কল করা ভাল হবে fun.apply(this, arguments)
মিগুয়েল মাদেরো 6'13

4
আসলে, "রিটার্ন" এবং "অপরিজ্ঞাত" বিভিন্ন জাভাস্ক্রিপ্ট তৈরি করে। এ ব্যবহার "Coffeescript চেষ্টা করুন" coffeescript.org , এক দেখতে পারেন স্পষ্টভাবে "আয়" coffeescript অপসারণ জাভাস্ক্রিপ্ট থেকে ফেরত সহ; যদিও "অপরিজ্ঞাত" দিয়ে জাভাস্ক্রিপ্ট ফাংশনটি "রিটার্ন শূন্য 0" দিয়ে শেষ হয়;
ড্যানিয়েল

1
আমি মনে করি আপনার শোধ করতে হবে ভয়েডফুনের সাথে কারণ আপনার অভ্যন্তরীণ ফাংশনটি যা চাইবে তা ফিরিয়ে দেবে বলে আমি সন্দেহ করি যা সম্ভবত আফিক সম্পাদন ক্ষতির কারণ হতে পারে।
আতুরস্যামস

10

হ্যাঁ, returnকোনও ফাংশনের শেষ লাইন হিসাবে।

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

answer = () ->
  42

extrovert = (question) -> 
  answer()

introvert = (question) ->
  x = answer()
  # contemplate about the answer x
  return 

আপনি যদি কফিটি কীটি সংকলন করে তা দেখতে চান তবে http://bit.ly/1enKdRl ব্যবহার করে দেখুন । (আমি আমার উদাহরণের জন্য কফিস্ক্রিপ্ট রিডেক্স ব্যবহার করেছি)


1
আমি মনে করি এটি হ্রাস পেয়েছিল কারণ শীর্ষ উত্তরদাতাদের উত্তরটিতে ইতিমধ্যে থাকা উত্তরটি ছাড়া এই উত্তরটির কোনও মূল্য যুক্ত হয় না, যা এই উত্তরটির 2 বছর আগে দেওয়াও হয়!
কুমারহর্ষ

5

মজাদার কিছু (সেশনাল)

suppressed = _.compose Function.prototype, -> 'do your stuff'

Function.prototypeনিজেই একটি ফাংশন যা সর্বদা কিছুই ফিরিয়ে দেয় না। আপনি এই রিটার্ন মানটি এই ব্ল্যাকহোলটিতে পাইপ করার জন্য আপনি রচনাটি ব্যবহার করতে পারেন এবং রচিত ফাংশনটি কখনই কোনও কিছুই ফেরত পাবে না।



-1

দেখে মনে হচ্ছে কফি স্ক্রিপ্টের ফাংশনগুলি অবশ্যই সর্বদা কিছু ফিরিয়ে আনবে null। সি তে, আপনার কাছে voidরিটার্ন টাইপ রয়েছে। ->, খালি ফাংশনটি সংকলন করে (function() {}), তাই এটি কেবলমাত্র ফাংশন যা কোনও কিছুই ফেরায় না।


এটা সত্যি না. return;একটি অকার্যকর মান ফেরত দিতে সি, জাভাস্ক্রিপ্ট এবং কফিস্ক্রিপ্টে কাজ করে।
yyny
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.