当前一个命令失败时,我希望我的提示显示交叉(✘).我使用以下代码:
export PROMPT=$'%(?..?\n)\n› '
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
› echo Hello
Hello
› asjdfiasdf
zsh: command not found: asjdfiasdf
?
›
?
Run Code Online (Sandbox Code Playgroud)
我想修改提示,以便在重新绘制提示后不重复交叉Enter(上例中的第三种情况).
可能吗?
这不是In Swift的副本,我如何声明符合一个或多个协议的特定类型的变量?.这个问题是关于一个特定的用例,我需要一个元类型,并且如何做到这一点绝对不明显.
Swift 4允许声明一个变量,它是一个子类并符合多个协议:
var myVariable: MyClass & MyProtocol & MySecondProtocol
Run Code Online (Sandbox Code Playgroud)
我需要这样的一致性但不是实例,而是类型本身.但是对于以下语法:
var classForCell: UICollectionViewCell.Type & AdditionalHeightable.Type
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
非协议,非类型类型'UICollectionViewCell.Type'不能在协议约束类型中使用
如何声明作为子类的元类型并符合Swift 4中的协议?
我正在为UIImageView创建子类,因此每次设置图像属性时都会发生动画.以下是成功的:
import UIKit
class AnimatedImageView: UIImageView {
var img: UIImage! {
get {
return self.image
}
set {
self.image = newValue
UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: {_ in
self.transform = CGAffineTransformMakeScale(1.1, 1.1);
}, completion: {_ in
self.transform = CGAffineTransformIdentity;
})
}
}
Run Code Online (Sandbox Code Playgroud)
这并不奇怪.我将UIImageView子类化并添加了一个名为'img'的全新变量,该变量又修改了UIImageView的'image'属性.
问题是最终用户可能会改变AnimatedImageView的'image'属性.
import UIKit
class AnimatedImageView: UIImageView {
override var image: UIImage! {
get {
return self.image
}
set {
self.image = newValue
UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: …
Run Code Online (Sandbox Code Playgroud)