我有一个产生的方法,看起来像:
def a_method(*params)
# do something
yield
# do something else
end
Run Code Online (Sandbox Code Playgroud)
如果传入一个块,我希望这个方法产生块; 并且如果没有传入块,该方法应该轻易地跳过yield sentense而不会崩溃,例如:
no block given (yield) (LocalJumpError)
Run Code Online (Sandbox Code Playgroud)
当然,最直接的方法是将方法更改为:
def a_method(*params, &block)
# do something
yield if block
# do something else
end
Run Code Online (Sandbox Code Playgroud)
但是不是更漂亮的方式吗?
在Ruby中,我只是想摆脱字符串的最后n个字符,但以下内容不起作用
"string"[0,-3]
Run Code Online (Sandbox Code Playgroud)
也不
"string".slice(0, -3)
Run Code Online (Sandbox Code Playgroud)
我想要一个干净的方法,而不是像
"string".chop.chop.chop
Run Code Online (Sandbox Code Playgroud)
它可能是微不足道的,请任何人教我!谢谢!
我正在写一个小宝石,我要定义一个DSL样方法,几乎是一样的desc,并task在方法耙.
Rake将它们定义为Rake::DSL模块中的私有方法然后
self.extend Rake::DSL
Run Code Online (Sandbox Code Playgroud)
将模块混合到主对象中?(如果我错的话,我是新手并继续笑)
这样做有什么好处?是因为将这些方法设为私有可以阻止任何其他对象使用它们(也就是说,为了防止这样的事情some_obj.desc)?
如果我定义方法怎么办? Kernel
module Kernel
private
include Rake::DSL
end
Run Code Online (Sandbox Code Playgroud)
有什么区别吗?
我正在编写非常基于模式的Spring AOP,这里是.xml
<bean id="aoplistener" class="tao.zhang.Listener"/>
<aop:config>
<aop:aspect ref="aoplistener">
<aop:pointcut id="whenCalled" expression="execution(* callme(..))" />
<aop:after method="scream" pointcut-ref="whenCalled" />
</aop:aspect>
</aop:config>
Run Code Online (Sandbox Code Playgroud)
tao.zhang.Listener中的方法scream()只打印出一些文本,并且应该在调用方法callme()时执行.
我有一个名为logger的bean ,它有方法log()和callme()
public void log(){
callme();
System.out.println("Hello from logger ~~~~~~~~~~~~~~~~~~~");
}
public void callme(){
System.out.println("I'm called");
}
Run Code Online (Sandbox Code Playgroud)
请注意,callme()由log()调用
现在我有一个调度程序,每5秒调用一次log():
<task:scheduler id="myScheduler" pool-size="10"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="logger" method="log" fixed-rate="5000"/>
</task:scheduled-tasks>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,没有调用scream(),但是如果直接调用callme():
<task:scheduler id="myScheduler" pool-size="10"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="logger" method="callme" fixed-rate="5000"/>
</task:scheduled-tasks>
Run Code Online (Sandbox Code Playgroud)
scream()被调用!
有什么建议?在我看来,这个切入点与另一个方法中调用的方法不匹配......
我正在使用rails 4.我试过了
redirect_to queue_url或redirect_to '\queue'.
两者都成功地将GET请求发送到正确的URL,由正确的操作处理,并且网页已使用正确的内容刷新.然而,浏览者的网址仍然保持不变.但我期待将网址更改为\queue.这很烦人,因为如果用户然后刷新页面,页面将刷新到原始URL.
有什么问题吗?