最近我一直在学习C和指针.
在Stephen G. Kochan撰写的"C编程"一书中,我遇到了一个例子,我很难完全理解它.
要使用指针将字符串复制from到字符串to,示例表明:
void copyString (char *to, char *from) {
while ( *from )
*to++ = *from++;
*to = '\0';
}
Run Code Online (Sandbox Code Playgroud)
在我的理解中,*from++是一个后增量*from; 因此,价值*to++应该*from只是.
例如,如果
`*from` is in the position 1.
`*from++` is in position 2
`*to++` in position 2,
Run Code Online (Sandbox Code Playgroud)
但是:*from++ = *to++应返回的值*from作为*to位置1,而不是2.
编译器说这是第2位,该书还说它的位置是2.
我在这里有点困惑.你对这个案子有什么可行的解释吗?
这些关键字有什么区别。
在下面的例子中,使用expect通过了测试,而is_expected.to失败了。
it { expect validate_uniqueness_of(:access_token) }
it { is_expected.to validate_uniqueness_of(:access_token) }
测试类User,由 Devise 生成
class User < ActiveRecord::Base
devise :lockable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
validates :access_token, uniqueness: true
before_validation :generate_access_token!, on: :create
def generate_access_token!
begin
self.access_token = Devise.friendly_token
end while User.find_by(access_token: self.access_token)
end
end
Run Code Online (Sandbox Code Playgroud)