if dict.objectForKey("key") != nil
不是可以改成 if dict["key"]
嘛
t.integer :age, limit: 8
#7 楼 @blacktulip 就是只支持局部类型推断,如果像 Haskell 那样做全程序分析的类型推断,没有多年积累的复杂算法的话会编译挂掉...
c++
class A : Base {
A() { ... }
}
swift
class A : Base {
init() { ... }
}
python
a_new_instance = AClass()
swift
var a_new_instance = AClass()
groovy
foo.?bar
swift
foo?.bar
a?[3]
scala
case class Ace
swift
enum Rank: Int {
case Ace = 1
}
C#
public int Month {
get {
return month;
}
set {
month = value;
}
}
swift
var Month : Int {
get {
return month
}
set {
month = newValue
}
}
c++
template <T>
void generic_func(T t) {
}
swift
func generic_func<T>(T t) {
}
objc protocol and category swift protocol and extension
c# out param, c++ reference
swift inout
#31 楼 @yanguango 和 swift-lang 没关系...
global alias 挺危险的,补全也要自己写挺复杂的函数,不如定义个环境变量?
#45 楼 @ShiningRay 例如一只手拿着鸡腿,另一只手写代码...
我想问下哪款可以设定 光 Fn 键粘滞的?有时单手打字不好按组合键
#61 楼 @sefier 建议你读一读对 sql-92 标准中的隔离等级的批评 http://www.cs.umb.edu/~poneil/iso.pdf 其中对数据库事务隔离等级做了更细致的定义,并加上了和 repeatable reads 很接近,但有细微区别的 cursor stability 和 snapshot 等级。mysql 的 repeatable reads 接近于里面描述的 cursor stability 等级 (因为它允许 read skew, write skew 和 lost update 的发生)
既然你用的 PG, 很多手动加锁的地方还是再思考一下的好,因为隔离等级和 mysql 的行为有微妙的不同,如果是自己多加的锁影响了性能就不要怪 PG 的事务慢了...
1) SQL-92 标准里定义的不明确已经被无数人吐槽过了,而且标准里是用锁来做定义的标杆的,那时还没有 MVCC 呢. 2) 我是认识不够,mysql 这么做的逻辑我是弄不懂,反正我也不用 mysql 了不用踩坑了... 但你认识充足肯定有大量的解决 mysql 事务坑的经验吧?
在一个 repeatable read 事务里,mysql 可以产生这样的现象:
select * from articles where id=1 and n=1
返回 1 条记录update articles set n=2 where id=1 and n=1
影响 0 条记录这对不对?
3) 自己看清楚自己给的链接吧,里面都给了 PG 的 repeatable read 和 serializable 的行为区别的例子
再赞,而且响应头已经加了 HSTS Strict-Transport-Security
, 以后浏览器会自动使用 https, 减少跳转,速度更快并且更安全
#24 楼 @izzyleung 比行数少就更难看了...
1.upto(100){|i|puts i.to_s.index(ARGV.first) ? 'Fizz' : ->s{[i, s][s.size <=> 0]}[%w[Fizz Buzz Whizz].zip(ARGV).map{|w, n|[w][i % n.to_i]}.join]}
用表计算,是不是更难读一些?
raise "require 3 digits" if ARGV.size != 3 or ARGV.any?{|a| !(('1'..'9').include? a) }
1.upto 100 do |i|
next puts 'Fizz' if i.to_s.index ARGV.first
s = %w[Fizz Buzz Whizz].zip(ARGV).map{|w, n| [w][i % n.to_i] }.join
puts [i, s][s.size <=> 0]
end