我一直在同时学习Ruby和Python,我注意到的一件事是,这两种语言似乎对待作用域的方式不同。下面是我的意思的一个例子:
# Python
a = 5
def myfunc():
print a
myfunc() # => Successfully prints 5
# Ruby
a = 5
def myfunc
puts a
end
myfunc # => Throws a "NameError: undefined local variable or method `a' for main:Object"
在Python中,def块似乎可
也就是说,可能将其构造为类似于JavaScript中的生命,以便所有这些变量仅在函数范围内可见?
当我把一些Go程序转换成Ruby来比较它们的运行速度时,我不得不把所有的Go全局变量从width转换成Ruby中的$width,这样在任何函数中,这些全局值都可以被使用。
但是如果有15或20个这样的变量,那么转换就变得非常麻烦。在Ruby中,有没有一种方法可以不对全局变量使用$?我首先尝试定义一个main方法,并希望它是main内部的本地方法
def main
foo = 1
def another
p foo
end
another()
end
main()
我现在的位置是,我有一个插件文件夹,可能有1或100个插件需要加载。
现在的问题是,每个插件都需要一个在启动ruby文件中定义的类的实例。
一个真正简化的例子是:
#startup.rb
def load_plugins
#... get each plugin file
require each_plugin
end
class MuchUsedClass
def do_something
#...
end
end
muchUsedInstance = MuchUsedClass.new
load_plugins
#some_plugi
我主要用JS编写代码,但我猜这将适用于许多语言。 在函数中使用全局/更高作用域变量与使用传递到函数中的变量之间的有效区别是什么,反之亦然? let somevariable = 5 ;
function somefuntion() {
let scopedvariable = 10;
return scopedvariable*myvariable
}
somefunction();
// OR
let myvariable = 5 ;
function somefuntion(somevariable ) {
let scopedvariable = 10;
re
我们知道您可以在Ruby中定义变量
x || = 1 # 1
x || = 2 # still 1
这也起作用。
a = 1 unless defined? b
# a is 1 now
但这不是
a = 1 unless defined? a
# a is nil here
有谁知道为什么这会有意义吗?我认为a = 1 unless defined? a听起来比a ||= 1好,但是它没有起作用。
blah = 10
def what?
"#{blah}"
end
puts what?
# =>
# NameError: undefined local variable or method `blah' for main:Object
# from (irb):3:in `what?'
# from (irb):5
# from E:/RailsInstaller/Ruby1.9.3/bin/irb:12:in `<main>`
为什么?写这篇文章的正确方式是什么?我应该只是在局部作用域中复制变量,还是有更好的
可以在PHP函数中使用PHP常量吗?
// in a different file
DEFINE ('HOST', 'hostname');
DEFINE ('USER', 'username');
DEFINE ('PASSWORD', 'password');
DEFINE ('NAME', 'dbname');
// connecting to database
function database()
{
// using 'global
我在试着理解Julia的作用域规则。我尝试了一个将z作为常规整数变量的for循环: z = 2
for i = 1:4
z += 1
end
println(z) 除非我把global z放在循环里面,否则它会给我一个UndefVarError: z not defined错误。 但是,如果我将z设置为1x1数组,那么在没有global的情况下,它完全可以正常工作 z = [2]
for i = 1:4
z .+= 1
end
println(z) $ julia test.jl
[6] 数组的作用域和变量的作用域有什么区别?
我正在尝试理解Ruby变量,并认为以C#的形式来查看它们可能会更好
谁能告诉我Ruby的C#等价物(例如@@ ==公共静态变量?):
$ global变量
@实例变量
@@ class变量
a-z局部变量
A-Z常量
我还遗漏了其他类型的变量吗?
有人能解释一下@instance变量是如何使用/函数的吗?
起初,我认为它是类实例中的某个全局变量,但后来我看到它在实例方法中的作用域中使用,就像局部变量一样。
这里有一个来自“基础良好的rubyist”的例子。
class C
def show_var
@v = "i am an instance variable
我想使用Ruby1.9中的eval()以一种交互的方式测试小的Ruby代码。很久以前(在Ruby1.4左右),我在互联网上发现了一个简洁的脚本,提供了这个功能。以下是简化和简化的版本:
line = ''
$stdout.sync = true
print "ruby> "
while true
input = gets
if input
line = input
else
break if line == ''
end
begin
print eva
我对web开发还是相当陌生的(嗯,所有的开发),用Rails为我的porfolio构建了一个电子商务应用程序。我正在使用Redis进行缓存,并构建一个简单的购物车(我自己,而不是使用gem)。
除了Rails之外,我还使用MERN (Node、Express、Mongo、ReactJS)栈将几个简单的应用程序拼接在一起,以提高我的JavaScript技能。
在我的Redis初始化程序(config/initializers/redis.rb)的复制-面食代码过程中,我观察到了一些全局变量:
if Rails.env.production?
$redis = Redis.new(url: E