我想知道为什么C++,C#,Java开发人员想要学习动态语言?
假设公司不会将其主要开发语言从C++/C#/ Java切换为动态语言,那么动态语言的用途是什么?
动态语言可以在仅仅几天的学习之后比使用多年的静态语言更快或更好地完成哪些帮助任务?
在看到前几个回复之后,很明显有两个问题.我的主要兴趣是雇主作为一项费用是合理的.也就是说,我正在寻找雇主资助学习动态语言的理由.除了明显的员工将有更广泛的视野,雇主通常寻求一些"真正的"利益.
作为一个编程练习,我编写了一个Ruby片段,它创建了一个类,从该类中实例化了两个对象,monkeypatches一个对象,并依赖于method_missing来monkeypatch另一个.
这是交易.这按预期工作:
class Monkey
def chatter
puts "I am a chattering monkey!"
end
def method_missing(m)
puts "No #{m}, so I'll make one..."
def screech
puts "This is the new screech."
end
end
end
m1 = Monkey.new
m2 = Monkey.new
m1.chatter
m2.chatter
def m1.screech
puts "Aaaaaargh!"
end
m1.screech
m2.screech
m2.screech
m1.screech
m2.screech
Run Code Online (Sandbox Code Playgroud)
你会注意到我有一个method_missing的参数.我这样做是因为我希望使用define_method动态创建具有适当名称的缺失方法.但是,它不起作用.实际上,即使使用带有静态名称的define_method也是如此:
def method_missing(m)
puts "No #{m}, so I'll make one..."
define_method(:screech) do
puts "This is the new screech."
end
end
Run Code Online (Sandbox Code Playgroud)
结束以下结果:
ArgumentError: wrong number of arguments (2 for 1) …Run Code Online (Sandbox Code Playgroud) 对于临时 Rails任务,我们有一些实现替代方案,其中主要似乎是:
script/runner some_useful_thing
Run Code Online (Sandbox Code Playgroud)
和:
rake some:other_useful_thing
Run Code Online (Sandbox Code Playgroud)
我更喜欢哪个选项?如果有一个明显的喜欢那么,如果有的话,我应该考虑使用另一个?如果从来没有,那么为什么你认为它仍然存在于没有弃用警告的框架中?
这可能不是你期待的问题!我不想要一个匹配换行符的正则表达式; 相反,我想写一个长的正则表达式,为了便于阅读,我想分成多行代码.
就像是:
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
Run Code Online (Sandbox Code Playgroud)
可以吗?
我已经完成了一些Sinatra和Rails样本,但我很难搞清楚哪些功能属于哪种技术.
使用Sinatra/Rails可以获得什么?它只是ActionPack/ActionView吗?如果我错了,请纠正我,但我可以使用Webrick/Mongrel并提供我的.erb文件吗?我可以在这些文件中使用ActiveRecord技术,仍然可以访问帖子变量,会话状态和查询字符串变量吗?
所以,我问你们的是,如果我从上面的类似PHP的场景开始; Webrick + ERB + ActiveRecord,使用Sinatra可以获得什么?通过使用Rails我还能获得什么?
原谅初学者的问题,但是说我有一个数组:
a = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
而某个功能; 让我们说它是一个实例函数:
class Ilike
def turtles(*args)
puts args.inspect
end
end
Run Code Online (Sandbox Code Playgroud)
我如何调用Ilike.turtles,a就像我打电话一样(Ilike.new).turtles(1,2,3).
我很熟悉send,但这似乎并没有将数组转换为参数列表.
与我正在寻找的并行是Javascript apply,相当于call将数组转换为参数列表.
我有一个带功能的模块.它位于/lib/contact.rb中:
module Contact
class << self
def run(current_user)
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想访问模块中的'users_path'之类的URL帮助程序.我怎么做?
https://github.com/intridea/omniauth.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError)
Run Code Online (Sandbox Code Playgroud)
那我该怎么办?bundle install适用于开发,但是当我推送并部署到我的生产服务器时.即使在我的生产服务器上运行bundle install之后,我也会收到此错误.
我想知道是否有人知道如何在activerecord中执行"IN"子句.不幸的是,"IN"条款几乎是不可谷歌的,所以我必须在这里发布.基本上我想回答这样一个问题"给我这些宿舍id在这个阵列中的所有大学生[id array]".我知道如何在给出一个单独的宿舍ID的情况下编写查询,但我不知道如何在给定一组id的情况下执行此操作.
任何帮助是极大的赞赏.我确定这是某个问题的重新发布,所以一旦找到答案/更好的搜索词,我就会删除它.
在服务器端使用带有stream块的Sinatra .
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
out.callback { connections.delete(out) }
end
end
Run Code Online (Sandbox Code Playgroud)
在客户端:
var es = new EventSource('/stream');
es.onmessage = function(e) { $('#chat').append(e.data + "\n") };
Run Code Online (Sandbox Code Playgroud)
当我直接使用应用程序,通过http://localhost:9292/,一切都很完美.连接是持久的,所有消息都传递给所有客户端.
但是当它通过Nginx时http://chat.dev,连接被丢弃并且重新连接每隔一秒左右触发一次.
Nginx设置对我来说没问题:
upstream chat_dev_upstream {
server 127.0.0.1:9292;
}
server {
listen 80;
server_name chat.dev;
location / {
proxy_pass http://chat_dev_upstream;
proxy_buffering off;
proxy_cache off;
proxy_set_header Host $host;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试keepalive 1024在upstream部分以及proxy_set_header Connection keep-alive;在 …