我为我的应用程序不期望的每个条件创建了异常. UserNameNotValidException
,PasswordNotCorrectException
等等.
但是我被告知我不应该为这些条件创建例外.在我的UML中,那些是主流的例外,为什么它不应该是例外?
创建例外的任何指导或最佳实践?
Ruby 2.0支持关键字参数.我想知道,常规与关键字参数混合的"规则"是什么?这样的东西不起作用:
def some_method(a: 'first', b: 'second', c)
[a, b, c]
end
Run Code Online (Sandbox Code Playgroud)
但这会:
def some_method(c, a: 'first', b: 'second')
[a, b, c]
end
Run Code Online (Sandbox Code Playgroud)
那么为什么在关键字参数(而不是之后)之前放置一个常规参数呢?
网上有关于此的一些参考(混合关键字和常规参数)吗?我似乎找不到任何东西.
我正在阅读一个资源,解释如何将枚举器用作生成器,例如:
triangular_numbers = Enumerator.new do |yielder|
number = 0
count = 1
loop do
number += count
count += 1
yielder.yield number
end
end
print triangular_numbers.next, " "
print triangular_numbers.next, " "
print triangular_numbers.next, " "
Run Code Online (Sandbox Code Playgroud)
我不明白yielder
这里的目的,它需要什么值,以及这个代码如何与程序代码的其余部分并行执行.
执行从顶部开始,并且可能在块"生成"我的代码的值时暂停.
有人可以在编译器的眼中解释这一切是如何执行的吗?
我有以下代码:
class BookPrice
attr_accessor :price
def initialize(price)
@price = price
end
def price_in_cents
Integer(price*100 + 0.5)
end
end
b = BookPrice.new(2.20)
puts b.price_in_cents
Run Code Online (Sandbox Code Playgroud)
这一切都很好,产生220.但当我更换第二行attr_accessor:价格与:
def price
@price = price
end
Run Code Online (Sandbox Code Playgroud)
我得到堆栈级别太深(SystemStackError)错误.这是怎么回事?我知道我可以用@price替换Integer(价格*100 + 0.5)而不是方法调用价格,但是我想保持它与OOP原因的方式.如何在没有attr_accessor的情况下使这段代码按原样运行?
在我创建的React组件中,我在render
方法返回值中有这个:
this.props.albums.map(function(albumDetails, id) {
return (<div className="artistDetail" key={id} onClick={component.getTracks}>
<img src={albumDetails.imageSrc} />
<p><a href="#" >{albumDetails.name}</a></p>
</div>)
Run Code Online (Sandbox Code Playgroud)
如果我没有指定密钥,React警告我这样做.所以我做了.然后我指定了onClick
事件处理程序
getTracks: function (e) {
console.log(e.target.key);
},
Run Code Online (Sandbox Code Playgroud)
希望我能得到<div>
我创建的 关键属性.但这不起作用(我得到了一些HTML输出,e.target
但没有任何用处e.target.key
).如何key
从我点击的元素中获取属性?
在你不知道JS - 强制章节我已经读到,强制,你永远不会得到一个复杂的值,如对象或数组.拳击在准确的意义上不被视为强制.如何在引擎盖后面的JavaScript与强制不同?我真的看不出表面上的任何差异.
我真的虽然在网上找到答案,但我不能.有什么不同吗?人们说在抛出异常时会产生"回溯",而堆栈跟踪则是从应用程序启动时到抛出异常的点的方法调用列表.如果我们将堆栈跟踪视为数组,则最后一个元素将是抛出异常的方法.回溯的情况是否相反?例如,在像Ruby这样的编程语言中,如果我们有:
begin
raise 1
rescue
p $!.backtrace ; p caller(0) #=> displays the back-trace, then the stack-trace
end
Run Code Online (Sandbox Code Playgroud)
他们将输出2个不同的阵列,这对我来说,他们有一些根本不同的东西.
def some_method
puts 'in method'
return 'I am a return value'
ensure
puts 'will print at the end'
# Can I somehow get the return value of some_method here?
end
Run Code Online (Sandbox Code Playgroud)
是否有一些(可能是元编程)原则/方法来获取方法在"ensure"子句中的返回值,该子句是方法定义的一部分(无论如何我们都知道它们执行)?
据我所知,反序列化正在将字节流转换为对象.
解析有点相同,通常将字符串转换为某种数据结构.
解析一种反序列化?你能认为他们是同义词吗?
假设我有:
var fs = require('fs');
var a= fs.readFile(__dirname + '/someBigFile.txt', function(err, data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
我注意到,如果最初需要 2 秒来读取someBigFile
,现在则需要几毫秒。当您多次读取 Node.js 时,是否会发生一些内部缓存?例如:
for(var i =0; i < 10000; i++)
{
var greet = fs.readFile(__dirname + '/greet.txt', "utf-8", function(err, data) {
});
}
Run Code Online (Sandbox Code Playgroud) ruby ×5
backtrace ×1
exception ×1
fs ×1
javascript ×1
node.js ×1
reactjs ×1
readfile ×1
stack-trace ×1
terminology ×1