所有结构都有一个自动生成的memberwise initializer,您可以使用它来初始化新结构实例的成员属性...
问题1:默认初始化器有什么特别之处,为什么不能简单地称为默认初始化器?为什么要添加“成员”?是不是因为它列出了Structure 中定义的所有成员属性。并且在创建实例时,您还必须遵循 Structure 中定义的顺序。
问题 2是否还有其他特殊的初始化器有自己的特殊名称?如果是这样,它们看起来像什么。
[注释第一部分:] 与 Vadian 先生进一步讨论
[注第二部分:]
我在xCode中尝试了这个代码:let bigNum = Int8.max + Int("1")!编译器推断出类型的变量bigNumInt8并给我一个溢出错误.
对于Int8.max + Int("1")!:"+"的左侧具有Int8 右侧类型的类型Int.为什么编译器没有将bigNum推断为类型Int?
猜测:Swift的编译器总是通过更窄/受限制的值类型推断tye,因为它Int8是一个更小和更窄的类型Int,因此添加一个Int8和一个Int数字将导致Int8类型推断.
问题:我是对的吗?或大多数是正确但不精确.如果是这样,请纠正我.
谢谢
这可能与语言相关的问题无关.由于Swift是我目前正在学习的语言,所以我在这里使用它.
我从Matt Neuburg的书" iOS 10编程基础与Swift"中选择了这句话
In Swift, "everything is an object" and an object
Object is something you can send a message to.
Run Code Online (Sandbox Code Playgroud)
我们来举个例子吧.假设有一个名为Dog的客户类型.它有bark()和sit()函数.已经启动了两个名为fido和rover的Dog类型的实例.
In swift, the syntax of message-sending is dot-notating, like
fido.bark()
rover.sit()
rover.printName()
The above code lines means sending message to object fido and rover
Run Code Online (Sandbox Code Playgroud)
问题1:
为什么描述是:向对象fido和流浪者发送消息?对我来说,看起来fido和rover这个对象会发出一些消息在控制台中打印出来(例如printName())而不是我们向它发送消息..bark()看起来它会使fido做某事并将其反应射向外部世界,因为bark()是其腹部的功能,而不是我们创造并注入其身体的东西.我们只是通知这个功能它的工作时间.这个通知对象做特定的事情是将消息发送给对象的意义吗?
问题2:
"In Swift, everything …Run Code Online (Sandbox Code Playgroud) @我发现很多任务名称都以符号加数字结尾,请参见下面的示例
# Provides credentials for Azure Artifacts feeds and external Maven repositories.
- task: MavenAuthenticate@0
#inputs:
#artifactsFeeds: MyFeedInOrg1, MyFeedInOrg2 # Optional
#mavenServiceConnections: serviceConnection1, serviceConnection2 # Optional
Run Code Online (Sandbox Code Playgroud)
普遍认同的目的是什么@0?
这是一个基本问题,甚至可能很愚蠢,但对我来说很重要。我不知道答案,感谢您抽出时间。
[问题]:
在 Swift 中,计算属性没有任何存储分配,因此它并不是真正的变量。您可以在《iOS Apprentice》(第五版)一书第二章第 197 页找到这句话
[问题]:
计算属性没有任何存储分配吗?我不明白这一点。内存中必须有某个地方可以保存数据来进行计算,否则,这怎么可能呢?或者,这意味着仅计算被调用的值,并在将数据交给调用者后删除/销毁数据,我这个概念的方向正确吗?
谢谢
有关于此的问题但似乎与迭代场景有关.我在这里有不同的情况.参考定义和"重新分配"发生在同一范围内.
#include <iostream>
using namespace std;
int main(void) {
int obja = 10, objb = 20;
int &r = obja;
cout << r << endl; // prints the 10
r = objb; // ???? re-assigning worked?
cout << r << endl; // prints the 20
return 0;
}
Run Code Online (Sandbox Code Playgroud)
题:
我错误地理解了什么?
...
for (int i = 1; i != 9; ++i)
std::cout << i << std::endl;
...
Run Code Online (Sandbox Code Playgroud)
for 循环语句的头部由三部分组成:初始化语句、条件和表达式。在上面的例子中,init 语句是int i = 1;
似乎将带有逗号运算符的语句作为 init 语句包含在内是非法的。
...
for ( (int i , cin >> i) ; i != 9; ) // 2 Erros
std::cout << i << std::endl;
...
Run Code Online (Sandbox Code Playgroud)
对于上面的示例,我收到了 2 个错误警告
( int i , cin >> i) ; i != 9;) 错误:'int' 之前的预期主表达式
(int i , cin >> i) ; i != 9;) 错误:i' 未在此范围内声明
有人可以向我解释这个错误的原因是什么吗?
我正在按照办公室指南创建钩子并将其添加到预提交检查过程中。我需要创建 3 个文件
.pre-commit-config.yaml
.pre-commit-hooks.yaml
theCheckFile.sh
Run Code Online (Sandbox Code Playgroud)
配置文件配置hooks文件,该文件调用theCheckFils.sh文件来检查我的代码风格。
Q.1我应该把这些文件放在哪里?我目前将它们放入我的项目文件夹中,并编辑 .gitignore 文件以忽略所有它们,有更好的建议吗?或者这样就可以了。
Q.2 pre-commit-config.yaml 文件中需要 rev,我应该在哪里找到此信息,我当前使用的代码 Repo 中没有版本信息,我可以随机创建一个数字吗?
我有点知道函数中的外部名称是什么。但对于“外部名称的用途是什么、什么时候使用它、使用它有什么好处”这个问题,我无法给出精确、清晰和令人信服的答案。
func RandomInt(minimum min: Int, maximum max: Int) -> Int {
if max < min { return min }
return Int(arc4random_uniform(UInt32((max - min) + 1))) + min
}
Run Code Online (Sandbox Code Playgroud)
我的理解
在上面的代码中,minimum和maximum是外部名称。它们“绑定”到内部名称(min和max)。当您调用该函数时,外部名称应写入参数列表中。这个长且具有描述性的外部名称可以提高使用该函数时代码的可读性。
如果有什么错误的地方请指正或者补充
多谢。
swift ×6
c++ ×2
allocation ×1
azure-devops ×1
c++11 ×1
for-loop ×1
function ×1
git ×1
initializer ×1
message ×1
object ×1
reference ×1
set ×1