Ruby中如何实现嵌套函数的嵌套调用?

2026-04-11 16:041阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计452个文字,预计阅读时间需要2分钟。

Ruby中如何实现嵌套函数的嵌套调用?

我目前正在学习Ruby。我已经尝试了解闭包的工作方式,以及它们与函数的区别。我完全知道闭包应该通过proc或lambda来实现。因此,我想深入了解Ruby。正因为如此,我检查了各种非标准的代码。我试图理解为什么会有为什么这样的代码。

我现在正在学习ruby.我试图了解闭包的工作方式,以及它们与函数的区别.我完全知道闭包应该通过proc或lambda来实现.

我想要深入了解ruby.因此,我检查各种非正统的代码.我试图理解为什么第3行工作而第5行是错误.

x=123 def b(x) p x def a(u) p x # why is this an error?!?!? end a 4 end b 1

>如果a无法访问b的参数,为什么不访问全局x = 123?
>如果我明确使用更改行1& 5到全球“$x”?
>如果我明确地使用lambda,为什么这会起作用?

Ruby中如何实现嵌套函数的嵌套调用?

这纯粹是一个学习练习,我这样做是为了了解幕后发生的事情.

这就是所谓的“范围门”.基本上,当您开始定义方法/类/模块时,会创建一个新范围,并且无法访问其他范围内的所有局部变量.这不适用于实例/全局变量,您将继续访问这些变量.

由于lambda不是方法,因此它不会创建新范围并重新使用现有范围.

也,

why line 3 works

x = 123 def b(x) p x # this "x" is "x the parameter", not "x the local variable from outer scope" # that's why it works. If you tried to access the local var, it wouldn't work. def a(u) p x # like here, see? Doesn't work. end a 4 end b 1

本文共计452个文字,预计阅读时间需要2分钟。

Ruby中如何实现嵌套函数的嵌套调用?

我目前正在学习Ruby。我已经尝试了解闭包的工作方式,以及它们与函数的区别。我完全知道闭包应该通过proc或lambda来实现。因此,我想深入了解Ruby。正因为如此,我检查了各种非标准的代码。我试图理解为什么会有为什么这样的代码。

我现在正在学习ruby.我试图了解闭包的工作方式,以及它们与函数的区别.我完全知道闭包应该通过proc或lambda来实现.

我想要深入了解ruby.因此,我检查各种非正统的代码.我试图理解为什么第3行工作而第5行是错误.

x=123 def b(x) p x def a(u) p x # why is this an error?!?!? end a 4 end b 1

>如果a无法访问b的参数,为什么不访问全局x = 123?
>如果我明确使用更改行1& 5到全球“$x”?
>如果我明确地使用lambda,为什么这会起作用?

Ruby中如何实现嵌套函数的嵌套调用?

这纯粹是一个学习练习,我这样做是为了了解幕后发生的事情.

这就是所谓的“范围门”.基本上,当您开始定义方法/类/模块时,会创建一个新范围,并且无法访问其他范围内的所有局部变量.这不适用于实例/全局变量,您将继续访问这些变量.

由于lambda不是方法,因此它不会创建新范围并重新使用现有范围.

也,

why line 3 works

x = 123 def b(x) p x # this "x" is "x the parameter", not "x the local variable from outer scope" # that's why it works. If you tried to access the local var, it wouldn't work. def a(u) p x # like here, see? Doesn't work. end a 4 end b 1