Tag: 范围

为什么在“catch”或“finally”的范围内的“try”中没有声明variables?

在C#和Java(也可能是其他语言)中,在“try”块中声明的variables不在相应的“catch”或“finally”块中。 例如,下面的代码不能编译: try { String s = "test"; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 在这段代码中,在catch块中对s的引用发生编译时错误,因为s只在try块的范围内。 (在Java中,编译错误是“无法parsing”;在C#中,“名称在当前上下文中不存在”)。 这个问题的一般解决scheme似乎是在try块之前而不是在try块内声明variables: String s; try { s = "test"; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 但是,至less对我来说,(1)这感觉像一个笨重的解决scheme,(2)它导致variables的范围比程序员想要的更大(整个方法的其余部分,而不是仅仅在上下文中的try-catch-最后)。 我的问题是,这个语言devise决定(Java,C#和/或任何其他适用的语言)背后的基本原理是什么?

在一个类中声明一个枚举

在下面的代码片段中, Color枚举是在Car类中声明的,以限制枚举的范围,并尽量不“污染”全局名称空间。 class Car { public: enum Color { RED, BLUE, WHITE }; void SetColor( Car::Color color ) { _color = color; } Car::Color GetColor() const { return _color; } private: Car::Color _color; }; (1)这是限制Color枚举范围的好方法吗? 或者,我应该声明它在Car类之外,但可能在它自己的命名空间或结构? 我今天刚刚遇到这篇文章,主张后者,并讨论关于枚举的一些好的观点: http : //gamesfromwithin.com/stupid-c-tr​​icks-2-better-enums 。 (2)在这个例子中,当在类中工作时,最好将枚举编码为Car::Color ,还是只需要Color就足够了? (我认为前者更好,以防万一在全局命名空间中声明另一个Color枚举。那么,至less我们明确指出了我们所指的枚举。)

确定一个variables是否在范围内?

我需要编写一个循环,执行如下操作: if i (1..10) do thing 1 elsif i (11..20) do thing 2 elsif i (21..30) do thing 3 etc… 但是到目前为止,在语法方面已经走上了错误的道路。

在Handlebars.js每个循环的范围外访问一个variables

我有一个handlebars.js模板,就像这样: {{externalValue}} <select name="test"> {{#each myCollection}} <option value="{{id}}">{{title}} {{externalValue}}</option> {{/each}} </select> 这是生成的输出: myExternalValue <select name="test"> <option value="1">First element </option> <option value="2">Second element </option> <option value="3">Third element </option> </select> 正如所料,我可以访问myCollection的每个元素的id和title字段来生成我的select。 而在select之外,我的externalValuevariables被正确打印(“myExternalValue”)。 不幸的是,在选项的文本中, externalValue值永远不会被打印出来。 我的问题是:我怎样才能从循环内访问每个handlebars.js范围以外的variables? 一如既往,在此先感谢。

Javascript:如何轻松设置“this”variables?

我有一个相当不错的Javascript的理解,除了我不能找出一个很好的方式来设置“这个”variables。 考虑: var myFunction = function(){ alert(this.foo_variable); } var someObj = document.body; //using body as example object someObj.foo_variable = "hi"; //set foo_variable so it alerts var old_fn = someObj.fn; //store old value someObj.fn = myFunction; //bind to someObj so "this" keyword works someObj.fn(); someObj.fn = old_fn; //restore old value 有没有办法做到这一点,没有最后4行? 这是相当烦人的…我已经尝试绑定一个匿名函数,我认为这是一个美丽和聪明,但无济于事: var myFunction = function(){ […]

使用Rails 4风格的lambda和参数的作用域?

我想知道如何在Rails 4中完成以下操作,或者如果我只是使用Rails 3的方法来使用一个lambdaexpression式,而这个lambdaexpression式可以和4一样以4的方式传递参数。 我对Rails 3相当陌生,并试图通过一些运行Rails 4的示例。 这是我的Rails 3代码: class Person < ActiveRecord::Base scope :find_lazy, lambda {|id| where(:id => id)} end # In console I can call Person.find_lazy(1) 所以,如果这是Rails 4的方式是使用 – > {},那是一个lambda,对吧? scope :all_lazy, -> { select("*") }如果我需要一个参数。 我尝试了一些不同的想法,并在控制台中使用 – > {}获取参数错误。

Java中的方法的默认范围是什么?

如果我input: void doThis(){ System.out.println("Hello Stackoverflow."); } doThis()的默认范围是什么? 上市? 受保护的? 私人的?

如何用已知的最小值和最大值来缩小一系列数字

所以我想弄清楚如何取一个数字的范围,并把这个数值缩小到一个范围。 想要这样做的原因是,我正在试图在java swing jpanel中绘制椭圆。 我想要每个椭圆的高度和宽度在1-30的范围内。 我有从我的数据集中find最小值和最大值的方法,但是直到运行时才会有最小值和最大值。 是否有捷径可寻?

如何在Ruby中的a和b之间生成一个随机数字?

例如,要生成3到10之间的随机数,我使用: rand(8) + 3 有没有更好的方法来做到这一点(像rand(3, 10) )?

我可以通过给出一个整数的范围来提示优化器吗?

我正在使用一个inttypes来存储一个值。 通过程序的语义,值总是在一个非常小的范围内变化(0-36), int (不是char )只是因为CPU的效率。 似乎很多特殊的算术优化可以在如此小范围的整数上执行。 对这些整数的许多函数调用可能被优化成一小组“神奇”的操作,并且一些函数甚至可以优化成查表。 那么,是否有可能告诉编译器这个int总是在这个小范围内,编译器是否有可能做这些优化?