是否可以通过扩展将协议合规性添加到不同的协议?
例如,我们希望A符合B:
protocol A {
var a : UIView {get}
}
protocol B {
var b : UIView {get}
}
Run Code Online (Sandbox Code Playgroud)
我想给B类的对象提供B的默认实现(合规性)
// This isn't possible
extension A : B {
var b : UIView {
return self.a
}
}
Run Code Online (Sandbox Code Playgroud)
动机是在需要B的情况下重用A的对象而不创建我自己的"桥"
class MyClass {
func myFunc(object : A) {
...
...
let view = object.a
... do something with view ...
myFunc(object) // would like to use an 'A' without creating a 'B'
}
func myFunc2(object : B) {
...
... …Run Code Online (Sandbox Code Playgroud) 如何在0和1的c ++矩阵中表示正弦函数的图形?
char sinM[DN][DM];
memset(sinM,32, sizeof(sinM));
for(int i=1;i<DN;++i) {
double val = sin(i*M_PI/180);
int valY = int(val*DM);
sinM[i][valY] = '1';
}
Run Code Online (Sandbox Code Playgroud)
这似乎没有用.
我对变量'tb'的声明感到困惑,我希望它到处都是.这个变量来自JSON.
如果我直接从JSON初始化
var tb = json as! Array<Dictionary<String, Any>>
Run Code Online (Sandbox Code Playgroud)
它正在工作,但它没有确定tableView函数的范围.
我仍然是一个快速的初学者,所以如果有人能解释我该怎么办?以及这个范围和变量init/type如何工作,我将非常感激.
这是代码:
class BiensViewController: UIViewController {
@IBOutlet weak var maTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
var user = ""
var tb:[Dictionary<String, Any>]
super.viewDidLoad()
//on récupère l'utilisateur courant.
let fm = FileManager.default
let urlRepDocuments = try! fm.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let url = urlRepDocuments.appendingPathComponent("user.plist")
print(url)
if let dico = NSMutableDictionary.init(contentsOfFile: url.path){
if dico["email"] != nil {
user = dico["email"] as! String
}
}
let parameters = …Run Code Online (Sandbox Code Playgroud)