如何正确使用块?
回答
你不能这样说:
"test" { |s| print s }
因为"test"
是一个字符串,而不是一个方法。这同样适用于您的do/end
版本。你可以说:
["test"].each { |s| print s }
虽然因为数组是可枚举和可数有each
方法。
男人,似乎我误读:) +1为你;) – apneadiving
{}通常用于一个衬里。
do/end for multiple lines。
但没有规则,做你喜欢的。
注意:
要是你需要传递的一个衬垫几个指令,他们有独立的;
保留我的答案,对初学者仍然有用。 – apneadiving
块只是大括号或关键字do/end中包含的一段代码。如前所述,您通常对一个衬垫使用大括号,并对多行代码执行/结束。块只能在调用某个方法后立即出现。您可以将块视为匿名方法(没有方法名的方法)。
在你的代码中,你是在一个字符串之后立即放置一个块,而不是方法调用。块可用于循环,因为这样的:
2.times { puts "hello" } # => 2
# >> hello
# >> hello
在上面的代码中,时间是属于所有整数(即,它是整数类的实例方法)的方法。 times方法执行块中的代码两次,并返回您调用它的对象(本例中为2)。您可以将块传递给任何方法,但不期望它们的方法将忽略该块。
块可以带参数。参数放置在管道('|'字符)之间。事实证明,第一个例子中可以接受的参数如下所示:
2.times { |i| puts i.to_s + " hello" } # => 2
# >> 0 hello
# >> 1 hello
我只是刚刚触及块的电源的表面。您可以在线版Programming Ruby: The Pragmatic Programmer's Guide(aka PickAx Book)免费阅读更多关于积木的信息。这是一个现在的几个版本,但对于Ruby的介绍,你应该发现它已经足够了。一旦你理解了块,你可以开始使用包含在数组和哈希中的Enumerable的强大功能。
- 1. 如何使用Drupal模块正确
- 2. 如何正确使用节点模块
- 3. 正确使用模块
- 4. 如何使块浮动图像正确
- 5. 如何在Promisify请求模块后正确使用putAsync模块
- 6. 如何正确使用moment.js?
- 7. 如何正确使用WL.Client.getID()?
- 8. 如何正确使用ngx_write_chain_to_temp_file?
- 9. 如何使用CALLER_IS_SYNCADAPTER正确
- 10. 如何正确使用CSS:not()?
- 11. MYSQL_FREE_RESULT如何正确使用?
- 12. 如何正确使用IXMLDOCUMENT
- 13. 如何正确使用dll
- 14. 如何正确使用QDBusPendingCallWatcher?
- 15. 如何正确使用RequireJS?
- 16. 如何正确使用Task.WhenAll()
- 17. 如何正确使用imagettftext?
- 18. 如何正确使用request.querystring
- 19. 如何正确使用gss_import_name?
- 20. 如何正确使用stdafx.h?
- 21. 如何正确使用profr
- 22. 如何使用RedirectToAction正确
- 23. 如何正确使用Topshelf.Logging
- 24. 如何正确使用Mono.Unix.UnixPipes.CreatePipes?
- 25. 如何正确使用MemoryMappedViewAccessor?
- 26. 如何正确使用dispatch_sync?
- 27. 如何正确使用cin.peek()
- 28. 如何使用replaceAll()正确
- 29. 如何正确使用MAX?
- 30. 如何正确使用VAO?
为了将来的参考,通常包含给出的错误信息是一个好主意。 –