在Ruby中,我如何以编程方式确定哪个类/模块定义了被调用的方法?
在我调用的给定范围内说some_method()
.在同一范围内,我想调用一个函数find_method(:some_method)
,将返回其类,单例类或模块定义some_method
.
这里有一些代码来说明我的意思:
class Foo
include ...
def bar
...
some_method() # calls a method in scope, assume it exists
find_method(:some_method) # Returns where the method is defined
# e.g. => SomeClassOrModule
...
end
end
Run Code Online (Sandbox Code Playgroud)
我猜我不得不使用的反射功能,从复杂的混合物self
,用self.ancestors
走了继承树,使用method_defined?
检查的方法在类或模块,并且可能是一些其他技巧来检查从范围界定最里面到最外层(因为代码可以在例如a内运行instance_eval
).
我只是不知道正确的顺序和Ruby的元模型的所有细微之处来实现find_method
,使得它在其搜索既详尽和正确的方法分派分辨率的观点.
谢谢!
我使用php 5.2.9作为xampp安装的一部分.我正在为我的webapp使用codeigniter框架.当我调用DateTime :: add时,Call to undefined method
会显示错误.我的代码是......
$date_now = new DateTime();
$formatted_date = $date_now->format('Y-m-d H:i:s');
$expiry_date = $date_now->add(new DateInterval('P1Y'));
Run Code Online (Sandbox Code Playgroud)
显示的错误是......
Fatal error: Call to undefined method DateTime::add() in C:\webapps\first\system\application\models\model_first.php on line 25
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?该DateTime::format
方法在这里工作正常.
问候
我正在尝试在我的应用程序(Seam/RichFaces)中显示购物车,并<a4j:commandLink />
在每个项目旁边包含"从购物车中移除" 以从购物车中删除该商品.当我点击链接时,它应该重新呈现购物车内容以显示该项目已被删除.但是,当我点击链接时,没有任何反应.在包含项目的操作中,购物车由ArrayList支持.我可以在我的操作中看到该调用,因此我知道该项目已被删除 - 如果我刷新页面,我看到它已被删除.我在下面的代码中做错了什么导致页面的这一部分不能正确地重新呈现?
更新: 似乎它会正确地重新呈现,但并非在所有情况下.如果我的购物车中有超过1件商品并删除任何商品,但最近添加的商品则会正确退款.如果我在购物车中只有一个商品,或者我尝试删除最近添加的商品,则无法重新呈现任何商品.关于这里发生了什么的任何想法?
<s:div styleClass="cart_bag" rendered="#{identity.loggedIn}">
<h6 class="head"><h:outputText value="Your Shopping Cart" /><a:status
forceId="true" id="shoppingCartStatus">
<f:facet name="start">
<h:graphicImage value="/images/ajax-loader.gif" styleClass="right" />
</f:facet>
</a:status></h6>
<s:div id="shoppingCartItems">
<s:fragment
rendered="#{shoppingCart.shoppingCartContents.size() le 0}">
<p><s:span styleClass="bold">
<h:outputText style="color: #FFF;"
value="Your shopping cart is empty" />
<br />
<br />
<br />
</s:span></p>
</s:fragment>
<s:fragment
rendered="#{shoppingCart.shoppingCartContents.size() gt 0}">
<h:form>
<ul>
<ui:repeat value="#{shoppingCart.shoppingCartContents}"
var="cartItem">
<li><s:div styleClass="thumb">
<a href="detail.html"><img src="../images/cart_thumb.gif"
alt="" /></a>
</s:div> <s:div styleClass="desc">
<s:link view="/index.xhtml" styleClass="bold"
value="#{cartItem.name}">
<f:param name="ctxid" value="#{cartItem.uniqueIdentifier}" /> …
Run Code Online (Sandbox Code Playgroud) 我知道我们shul用ssh user @ target但我们在哪里指定密码?
嗯谢谢你的所有回复.我的要求是我必须在不同的机器上启动一些服务器.应使用一个shell脚本启动所有服务器.好吧,每次输入密码看起来都不错,但我想我将不得不求助于那个选项.我不想保存公钥的一个原因是我每次都可能无法连接到同一台机器.尽管如此,很容易返回并修改脚本以更改目标地址.
乍一看,两种"阶级"之间存在明显的区别.但是,我相信有更多的相似之处:
我可以看到Haskell中的"class"更简洁,而且效率也更高.但是,我感觉理论上,"阶级"和"抽象阶级"是相同的.
你怎么看?
haskell programming-languages functional-programming typeclass
我有以下XML:
<links>
<item>
<title>Title 1</title>
<url>http://www.example.com/url-1</url>
</item>
<item>
<title>Title 2</title>
<url>http://www.example.com/url-2</url>
</item>
<item>
<title>Title 3</title>
<url>http://www.example.com/url-3</url>
</item>
</links>
Run Code Online (Sandbox Code Playgroud)
而且,我想将其转换为HTML列表:
<ul>
<li><a href="http://www.example.com/url-1">Title 1</a></li>
<li><a href="http://www.example.com/url-2">Title 2</a></li>
<li><a href="http://www.example.com/url-3">Title 3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
目前我有这个:
控制器:
require 'nokogiri'
doc = Nokogiri::XML(...)
@links = doc.xpath('//links/item').map do |i|
{'title' => i.xpath('//title'), 'url' => i.xpath('//url')}
end
Run Code Online (Sandbox Code Playgroud)
模板:
<ul>
<% @links.each do |l| %>
<li><a href="<%= l['url'] %>"><%= l['title'] %></a></li>
<% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)
产生的HTML:
<ul>
<li><a href="http://www.example.com/url-1http://www.example.com/url-2http://www.example.com/url-3">Title 1Title 2Title 3</a></li>
<li><a href="http://www.example.com/url-1http://www.example.com/url-2http://www.example.com/url-3">Title 1Title 2Title 3</a></li>
<li><a href="http://www.example.com/url-1http://www.example.com/url-2http://www.example.com/url-3">Title …
Run Code Online (Sandbox Code Playgroud) 由于SSL是安全互联网的支柱,(现在技术上称为TLS),我应该阅读哪些好书来理解它的各个方面?
我想我还需要学习一些数学,一些PKI书籍,加密书和Sysadmin书籍.由于这不是一个完整的清单,我有兴趣听听你认为明智的学习内容.
我是Flex编程的新手......我需要做一些迭代.
如何在Flex中执行循环?
Flex有"切换案例"吗?
多谢你们
当数学计算一个细胞,它给人的输入单元和输出单元的CellLabel小号In[$Line]:=
和Out[$Line]=
其中$线是从每输入计算递增的计数器.
如果您输入类似TraditionalForm[expr]
或TeXForm[expr]
(或任何其他*表格$OutputForms
)的内容,则表单的名称也会添加到输出单元格的标签中.例如Out[1]//TraditionalForm=
.
我找不到任何自定义这些标签的方法.
可以在"首选项"对话框中禁用它们.
它们似乎不在输入和输出单元格的StyleSheet选项中 - 尽管有与CellLabel行为相关的选项.
也不在Notebook选项中 - 尽管在Option Inspector中:Notebook Options> Evaluation Options> EvaluationCompletionAction可以通过添加TimeStamp来修改CellLabel.它还可以在StatusArea中显示Timing,一旦打印出其他内容,它就会被删除.
也不是任何init.m类型的 配置文件.
那么,有谁知道这些CellLabel的生成位置?
特别是,我有兴趣将Timing
CellLabel 添加到输出单元格.
我正试图在iPad中设置一个CTFrame
与我UITextView
的文本格式完全匹配的文件.首先,我将UITextView
文本转换为属性字符串.然后我设置了绘图框的宽度和高度,其中Core Text将绘制文本.我成功地使用Core Text绘制文本,但UITextView
Core Text显示略有不同的结果,即使我使用相同的字体和大小.具体来说,当我使用时[UIFont systemFontOfSize:21]
,每个空格中的UITextView
像素比Core Text的结果多一个像素.
对于短句或单词是可以的,但如果UITextView
和Core Text有多行,则它们的结果会变得非常不同.例如,UITextView
对行尾的一个单词执行自动换行,而Core Text将该单词保留在同一行.如果你看到附图,最后一个单词"段落"的起始位置已经非常不同了(由于8个空格字符,8个像素的间隙).
更糟糕的是,如果我使用不同的字体,例如添加到我的项目中的自定义字体,则每个字符都会UITextView
有1个像素.
我正在使用Core Text来查找当前光标的像素位置UITextView
,因此它们彼此完全匹配,每行包含相同数量的字符和单词.
问题:有没有办法使Core Text对象与UITextView的文本格式完全匹配?
谢谢!
这是我如何设置属性字符串的代码.(我刚刚关注了Core Text Guide.)
CTFontRef font = CTFontCreateWithName((CFStringRef) [UIFont systemFontOfSize:21.0].fontName, 21.0, NULL);
CFMutableAttributedStringRef attrString2 = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CFAttributedStringReplaceString (attrString2, CFRangeMake(0, 0), (CFStringRef) string);
CFAttributedStringSetAttribute(attrString2, CFRangeMake(0, [string length]),kCTFontAttributeName, font);
Run Code Online (Sandbox Code Playgroud)
这是一张照片.