我试图用Ruby做一个wolfram api。我发现你可以根据你在wolfram页面上找到答案的文本创建哈希。我设法在我的控制器中做了类似的事情:
class CountController < ApplicationController
def index
@result = Wolfram.fetch('6*7')
@hash = Wolfram::HashPresenter.new(@result).to_hash
@pods = @hash[:pods]
end
end
当我想在我的网站上展示这个时,我会在我看来做这样的事情:
<p>
<b>Result:</b>
<%= @result %>
<br>
<b>Hash:</b>
<%= @hash %>
<br>
<b>Hash.pods</b>
<%= @pods["Input"]%>
<br>
</p>
我的页面上有这样的内容:
Result: #<Wolfram::Result:0x00000004758b78>
Hash: {:pods=>{"Input"=>["6×7"], "Result"=>["42"], "Number name"=>["forty-two"], "Number line"=>[""], "Illustration"=>["6 | \n | 7"]}, :assumptions=>{}}
Hash.pods ["6×7"]
我希望只有6x7而不是[&#34; 6x7&#34;]。有没有解决方案将此哈希值更改为字符串?
答案 0 :(得分:1)
它显示为[6x7]
的原因是你的哈希将它存储在一个数组中。以任何其他方式显示它将会产生误导。但是你可以用:
Hash[@hash.map {|key, value| [key, (value.kind_of?(Array) && value.size == 1) ? value.first : value }]