如果我inline在MATLAB中使用该函数,我可以创建一个单独的函数名称,可以根据以前的选择做出不同的响应:
if (someCondition)
p = inline('a - b','a','b');
else
p = inline('a + b','a','b');
end
c = p(1,2);
d = p(3,4);
Run Code Online (Sandbox Code Playgroud)
但是我正在创建的内联函数变得非常史诗,所以我想将它们更改为其他类型的函数(即m文件,子函数或嵌套函数).
假设我有m个文件,比如Mercator.m,KavrayskiyVII.m等等(都取值phi和lambda),我想以p与上面相同的方式分配所选择的函数,以便我可以调用它多次(带可变大小的矩阵和使用eval不可能或完全混乱的东西.
我有一个变量,type,那将是所需要的功能(例如该名称中的一个'Mercator','KavrayskiyVII'等等).我想我需要p进入一个指向type变量内部命名函数的指针.我有什么想法可以做到这一点?
我有一个Sinatra webapp,我用enable :sessions它来访问我的会话数据session[:mything].
我现在想在服务器端存储数据(即使用基于数据库的会话),我无法弄清楚如何使用Rack::Session::Pool,这似乎是我需要使用的东西.
如何转换我的webapp以用于Pool?
我知道我需要添加这条线
use Rack::Session::Pool
Run Code Online (Sandbox Code Playgroud)
接下来是什么?- 提前致谢!
编辑:这是一个使用基于cookie的会话的例子:
require 'rubygems'
require 'sinatra'
enable :sessions
get '/' do
session.merge!(params)
session.inspect
end
Run Code Online (Sandbox Code Playgroud)
访问/?hi=there然后访问/,你仍然会看到{'hi'=>'there'},因为它已存储在cookie中.
所以我有一个我用sinatra构建的网络服务器,其内容如下:
set :variable,"value"
get '/' do
erb :index
end
Run Code Online (Sandbox Code Playgroud)
当然,模板views/index.erb看起来像这样:
<html>
<!-- etc -->
<ul>
<% my_array.each do |thing| %>
<%="Something: #{thing}, variable from sinatra: #{settings.variable}"%>
<% end %>
</ul>
</html>
Run Code Online (Sandbox Code Playgroud)
如果您尝试运行这样的代码,您会注意到您无法从erb模板内部访问sinatra的设置变量.任何想法如何在保持简洁的同时实现这一目标?
提前致谢!
在Ruby中,您可以rescue在分配结束时编写一个代码来捕获可能出现的任何错误.我有一个函数(下面a_function_that_may_fail:),如果不满足某些条件,它会让它抛出一个错误.以下代码运行良好
post = {}
# Other Hash stuff
post['Caption'] = a_function_that_may_fail rescue nil
Run Code Online (Sandbox Code Playgroud)
但是如果函数失败,我想发帖['Caption']甚至没有设置.
我知道我能做到:
begin
post['Caption'] = a_function_that_may_fail
rescue
end
Run Code Online (Sandbox Code Playgroud)
但感觉有点过分 - 是否有更简单的解决方案?
我正在尝试编写一个非常简单的终端应用程序,它将定期扫描蓝牙设备并显示范围内每个蓝牙设备的蓝牙网络地址(十六进制数字).我的目标平台是Mac OS X,所以我认为这将涉及Objective-C.我没有Objective-C的任何经验(虽然我有C的所有基础知识),但这看起来应该非常简单.
我在哪里可以找到快速本地列出蓝牙设备的文档和示例代码(或教程,或者过去曾经使用过的代码)?
不完全是一个编程问题,但它足够接近所以这里:
在Mac OS中,我会将我的应用程序的用户特定文件~/Library/Application Data/{MyApp}/放入*nix中,我会把它们放入~/.{MyApp}/- 我应该把它放在哪里用于Windows?
我将使用Ruby File.expand_path来访问这个目录,所以如果有一个等效的窗口~就可以了.
(对于Windows XP,Vista和7的答案,如果它们不相同,将不胜感激)
Nokogiri只支持XPath 1.0吗?我正在尝试在值的单元格中进行简单的字符串替换,就像这样(其中element包含类似'*我的字符串(无用的文本)')
<xsl:value-of select="replace(element,'^\*\ (.+)\ \(.*\)$','\\1')">
Run Code Online (Sandbox Code Playgroud)
这是不是很差的XSL?或者Nokogiri有限制吗?
我知道我可以通过以下方式在MATLAB中创建3D曲面图:
x = linspace(1,10,100);
y = linspace(10,20,100);
[X Y] = meshgrid(x,y);
Z = X * Y;
surf(X,Y,Z);
Run Code Online (Sandbox Code Playgroud)
但这需要生成高度图的所有节点对齐.我有一组数据,它们有任意点(x,y)和高度(z).是否有一种简单的方法来绘制图形,以类似的方式在点之间生成表面surf?
一个快速的Ruby问题:
params = {:q => "A query",:foo => "bar",:nasty => "Schrödinger's cat"}
p do_it(params)
=> q=A%20query&foo=bar&nasty=Schr%C3%B6dinger%27s+cat
Run Code Online (Sandbox Code Playgroud)
(我想ö编码就是这样,请原谅我,如果它错了)有没有比下面更简单的方法呢?:
def do_it(params)
out = []
params.each_pair{|key,val|
out.push "#{CGI.escape(key.to_s)}=#{CGI.escape(val)}"
}
out.join("&")
end
Run Code Online (Sandbox Code Playgroud)
我不打算以"最佳"的方式开始一场战争 - 它只是这种方法看起来很像kludgey和非红宝石一样!有小费吗?
我知道slug 编译器会删除.git在创建 heroku slug 时目录,但是有什么方法可以配置 Heroku 以便我可以从脚本中访问当前正在运行的 git 提交号?
我希望能够在我的 sinatra 应用程序(在 Heroku 中运行)上有一个小链接,上面写着“运行版本 e72fb274a0 ”(或类似的东西)。如何检索它,或强制 slug 编译器将其添加到环境变量中?
进步:
我认为最好的方法是制作一个自定义 buildpack,在删除 .git 目录之前将 git commit 版本号写入 heroku slug。
我已经尝试过这样做(请参阅我的 ruby buildpack 分支),但是我添加的行 –第 23 行– 似乎没有完成这项工作。Heroku 看到并使用新的 buildpack,但似乎没有将文件写入 slug。
任何人都知道为什么我的自定义 buildpack 没有按预期工作?
谢谢,
J.P