Có vẻ như CoffeeScript tự động trả về mục cuối cùng trong một phạm vi. Tôi có thể tránh chức năng này không?
Có vẻ như CoffeeScript tự động trả về mục cuối cùng trong một phạm vi. Tôi có thể tránh chức năng này không?
Câu trả lời:
Bạn phải trả về không có gì một cách rõ ràng hoặc để lại một biểu thức đánh giá là không xác định ở cuối hàm của bạn:
fun = ->
doSomething()
return
Hoặc là:
fun = ->
doSomething()
undefined
Đây là những gì tài liệu khuyến nghị, khi sử dụng phần hiểu:
Hãy cẩn thận rằng bạn sẽ không vô tình trả về kết quả hiểu trong những trường hợp này, bằng cách thêm giá trị trả về có ý nghĩa - như true - hoặc null, vào cuối hàm của bạn .
Tuy nhiên, bạn có thể viết một trình bao bọc như thế này:
voidFun = (fun) ->
->
fun(arguments...)
return
(Chú ý toán tử biểu tượng ở đây ( ...
))
Và sử dụng nó như thế này khi xác định các hàm:
fun = voidFun ->
doSomething()
doSomethingElse()
Hoặc như thế này:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return
, undefined
hoặc null
đến hết chức năng của tôi. Tuy nhiên, việc thêm vào null
có vẻ sai đối với tôi vì một số lý do. Tôi có đúng khi cho rằng đó là lựa chọn tồi tệ nhất trong ba lựa chọn không?
undfined
ở cuối. Sử dụng một return
câu lệnh rỗng dường như để diễn đạt trả về không có gì tốt hơn nếu để lại một dấu undefined
ở cuối hàm, do đó, giá trị trống return
có vẻ là lựa chọn tốt hơn.
fun(arguments...)
, sẽ tốt hơn nếu gọi fun.apply(this, arguments)
.
Có, với a return
là dòng cuối cùng của một hàm.
Ví dụ,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Nếu bạn muốn xem cà phê biến thành thứ gì, hãy thử http://bit.ly/1enKdRl . (Tôi đã sử dụng coffeescript redux cho ví dụ của mình)
Chỉ là một cái gì đó vui vẻ (ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
bản thân nó là một hàm luôn không trả về. Bạn có thể sử dụng tính năng soạn để chuyển giá trị trả về của mình vào lỗ đen này và hàm soạn thảo sẽ không bao giờ trả lại bất kỳ thứ gì.
Có vẻ như các hàm trong CoffeeScript luôn phải trả về một cái gì đó, ngay cả null
. Trong C, bạn có void
kiểu trả về.
->
, hàm trống, biên dịch thành (function() {})
, vì vậy nó là hàm duy nhất không trả về bất kỳ thứ gì.
return;
hoạt động trong C, JavaScript và CoffeeScript để trả về giá trị void.