此代码:security:
encoders:
AppBundle\Entity\User: bcrypt
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
database_users:
entity: { class: AppBundle:User, property: username}
firewalls:
secured_area:
pattern: ^/
anonymous: true
form_login:
login_path: login
check_path: login
csrf_token_generator: security.csrf.token_manager
logout:
path: security_logout
target: homepage
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
生成p [1, 2].each{ "foo" }
,而我希望它在迭代后放置nil
。如何在水晶?
答案 0 :(得分:4)
使用tap
:
p [1, 2].tap &.each { "foo" } # => [1, 2]
它会向块生成self,然后返回self。
另一个选项(不是更好)可能会创建一个自定义方法,只需在执行每个方法后返回self:
class Array
def each_with_self
each { |x| yield x }
self
end
end
p [1, 2].each_with_self { "foo" } # => [1, 2]
答案 1 :(得分:1)
对于您要求的情况,在p(..)
中使用parens就足够了,因为p
会将参数作为结果返回。
p([1, 2]).each{ "foo" }
p
的这种行为可以在表达式中间轻松检查,即将foo(bar, baz)
更改为foo(p(bar), baz)
。
对于#each
,在晶体中决定返回nil
以改进生成的代码,因为大多数时候都没有使用该值。这也可以防止在一天结束时产生一些工会。