小编dar*_*mkd的帖子

什么时候抛出异常?

我为我的应用程序不期望的每个条件创建了异常. UserNameNotValidException,PasswordNotCorrectException等等.

但是我被告知我不应该为这些条件创建例外.在我的UML中,那些是主流的例外,为什么它不应该是例外?

创建例外的任何指导或最佳实践?

language-agnostic exception

409
推荐指数
12
解决办法
14万
查看次数

在Ruby中将关键字与常规参数混合使用?

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)

那么为什么在关键字参数(而不是之后)之前放置一个常规参数呢?

网上有关于此的一些参考(混合关键字和常规参数)吗?我似乎找不到任何东西.

ruby

36
推荐指数
2
解决办法
6637
查看次数

枚举器作为Ruby中的无限生成器

我正在阅读一个资源,解释如何将枚举器用作生成器,例如:

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这里的目的,它需要什么值,以及这个代码如何与程序代码的其余部分并行执行.

执行从顶部开始,并且可能在块"生成"我的代码的值时暂停.

有人可以在编译器的眼中解释这一切是如何执行的吗?

ruby

22
推荐指数
3
解决办法
3789
查看次数

Ruby,堆栈级别太深(SystemStackError)

我有以下代码:

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的情况下使这段代码按原样运行?

ruby

15
推荐指数
2
解决办法
6万
查看次数

在React中检索元素的键

在我创建的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从我点击的元素中获取属性?

reactjs

14
推荐指数
1
解决办法
3万
查看次数

在JavaScript中拳击强制?

你不知道JS - 强制章节我已经读到,强制,你永远不会得到一个复杂的值,如对象或数组.拳击在准确的意义上不被视为强制.如何在引擎盖后面的JavaScript与强制不同?我真的看不出表面上的任何差异.

javascript

13
推荐指数
1
解决办法
3342
查看次数

堆栈跟踪和反向跟踪之间有什么区别?

我真的虽然在网上找到答案,但我不能.有什么不同吗?人们说在抛出异常时会产生"回溯",而堆栈跟踪则是从应用程序启动时到抛出异常的点的方法调用列表.如果我们将堆栈跟踪视为数组,则最后一个元素将是抛出异常的方法.回溯的情况是否相反?例如,在像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个不同的阵列,这对我来说,他们有一些根本不同的东西.

ruby stack-trace backtrace

12
推荐指数
1
解决办法
4166
查看次数

我可以在Ruby中的'ensure'中获得返回值吗?

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"子句中的返回值,该子句是方法定义的一部分(无论如何我们都知道它们执行)?

ruby

10
推荐指数
1
解决办法
3833
查看次数

反序列化与解析

据我所知,反序列化正在将字节流转换为对象.

解析有点相同,通常将字符串转换为某种数据结构.

解析一种反序列化?你能认为他们是同义词吗?

language-agnostic terminology

8
推荐指数
1
解决办法
2127
查看次数

readFile 是否缓存内容?

假设我有:

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)

fs readfile node.js

7
推荐指数
1
解决办法
5745
查看次数