swift 中带有字符的单引号

2024-05-12

我已经完成了 C、C++、Java,这些语言告诉我字符用单引号括起来(主要是在遵守正确的语法时),但字符串是双引号的。 Swift 的语法是否只允许字符位于单引号内,或者提供这种语法背后有一些有效的原因(逻辑)。

let char1: Character = "A" //correct 

let char2: Character = 'B' //incorrect 

自第一个 C 编译器开发以来,编译器技术的状况发生了很大变化。编译器变得更加聪明,能够自行解决问题,包括预期的表达式类型,而无需程序员的帮助。

搞清楚char与字符串文字就是这样的一个例子。理论上,当今 C 语言的结构允许在许多上下文中推断文字的类型。例如,在下面的代码中,编译器有足够的信息来将单字符字符串视为字符文字:

void foo(char c);
char s[] = "xyz";
// None of the below would compile
char a = "a";
foo("b");
if (s[1] == "c") {
    ...
}

然而,在当时,让程序员告诉编译器更容易"a", "b" and "c"实际上是'a', 'b', and 'c'。而且,由于函数原型直到 ANSI C 才被引入,foo("b")在该语言的原始 K&R 版本中甚至不可能进行推理。

当语言具有类型推断系统时,不再需要程序员的帮助,因此 Swift 设计者决定统一字符串和字符常量的语法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swift 中带有字符的单引号 的相关文章

随机推荐

  • OxyPlot 中日期时间轴上的不规则间隔

    我有一个 WPF 应用程序 其中使用 OxyPlot 来绘制图表 我不断地将点添加到图表中的线系列中 X 轴是日期时间轴 其间隔类型设置为秒 点不断添加到线系列中 当第一个点和最后一个点之间的时间跨度是特定的秒数时 我删除第一个点并使绘图无
  • Laravel:运行队列:在 Windows Azure Web App 上连续监听

    我觉得问这个问题有点傻 但我似乎无法在互联网上找到这个问题的答案 经过几个小时的搜索后 我发现在 Linux 服务器上 您使用 Supervisor 在您的网站上连续运行 php artisanqueue listen 无论有或没有守护进程
  • 如何最好地将 Facebook 评论从 http 移至 https

    我们正在将 Ruby On Rails 网站从 HTTP 迁移到 HTTPS 我们的网站使用fb comments用于捕获各个页面上的用户评论的插件 在我们的测试过程中 我们发现当我们将页面从 HTTP 切换到 HTTPS 时 Facebo
  • Jenkins 管道中的动态变量与 Groovy 方法变量

    我在 Groovy 中有一个用于声明性管道的 Jenkinsfile 以及两个创建的 Jenkins 变量 其名称为 OCP TOKEN VALUE ONE 和 OCP TOKEN VALUE TWO 以及相应的值 当我尝试传递方法变量并在
  • CMake - 作为构建过程的一部分运行测试并将标准输出捕获到文件

    我们有几个单元测试 我们希望将其作为构建过程的一部分运行 为了实现这一目标 我有一个帮助程序脚本 它创建一个运行测试的自定义命令 如果成功 则创建一个文件 test name passed 然后我添加一个自定义目标 test name ru
  • Typescript - 联合类型

    我创建了以下界面 export interface Message date Timestamp Date interface Timestamp seconds number nanoseconds number 不知道为什么 我收到以下
  • ManyToOne 关系上的 Hibernate @Where 注释

    我最近开始重构我的项目 因为我必须在一些表中添加额外的列 额外的列是一个枚举 待定或活动 由于这一更改 我现在需要重构所有查询 以便仅在状态为 活动 时检索行 经过一些研究 我发现我们可以使用 Where 注释来注释实体 当我在简单的列上使
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • Webix 树节点的 Font Awesome 图标

    Webix 与 Font Awesome 集成 http docs webix com desktop icon types html 但是如何使用 Font Awesome 图标代替树中的默认文件夹 文件图标来设置各个节点的样式呢 这是我
  • javax.faces.context.FacesContext.isReleased(FacesContext.java:609) 处的 java.lang.UnsupportedOperationException

    我正在集成 SWF 2 2 1 Primefaces 2 2 1 JSF 2 Spring Security 3 Spring 3 1 0M1 我能够访问 Spring web flow xml 中提到的第一页 但出现以下错误 com su
  • 类型错误:“NodeView”对象不支持项目分配 - NetworkX

    我正在完成本教程 https www datacamp com community tutorials networkx python graph tutorial https www datacamp com community tuto
  • python 中的按钮数组

    我想创建一个按钮网格 单击它们时将切换颜色 目前 每个按钮都会触发右下角的按钮 下面是代码 有两个问题 为什么会这样做以及如何纠正 def main self root Tk frame Frame root frame grid row
  • 如何在水晶报表的页眉中添加图表

    我尝试在水晶报表的页眉中添加图表 但它仅在报表页眉和报表页脚中添加 如何在页眉中添加图表 页眉或详细信息部分中不能有图表 图表仅在报告页眉或页脚中起作用 如果页眉中需要图表 请在页眉中创建子报表 并将图表放置在子报表中
  • maven-jar-plugin 不包含 .gitignore 文件

    我尝试使用maven将应用程序打包成jar文件 不知怎的 除了 gitignore文件被添加到 jar 中 为什么会跳过此文件以及如何禁用此文件 即使我尝试像下面这样包含它 包含也会被忽略 并且 jar 文件仍然为空
  • 如何在iOS社交框架中使用SLRequest获取facebook的电子邮件参数

    我尝试使用以下代码来获取登录 iOS 设置 Facebook 的人的电子邮件 请帮助我如何从 SLRequest 获取电子邮件 void getMyDetails if accountStore accountStore ACAccount
  • 如果我用opengl绘图的话SDL Renderer就没用了吗?

    我正在学习 SDL2 但我也在使用使用 OpenGL 调用的 imgui 库 从我在网上各种博客上读到的内容来看 我无法轻松混合 SDL2 渲染器和 opengl 调用 我要么使用其中之一 要么使用另一个 我读过的大多数教程都使用渲染器 所
  • 如何允许点击穿过 div 但仍然对悬停做出反应?

    说我有divA部分重叠的divB 我怎样才能允许点击divA穿过去divB但仍然有hover悬停时触发divA 我知道pointer events none 这使得点击通过 但也阻止了悬停 我也尝试过以下方法 但它不允许点击失败 docum
  • 如何中止 MongoDB shell 中正在运行的查询?

    我不敢相信我必须问这个问题 但是如何停止我刚刚运行的查询 该查询现在正在运行 并且显然需要很长时间才能在 Mongo shell 中完成 Control C似乎会使外壳崩溃 并吐出大量错误 中建议的愚蠢解决方案这个帖子 https stac
  • 在 VS 包项目中获取 dte2 或 TeamFoundationServerExt 对象?

    我正在开发一个 Visual Studio Package 项目 该项目需要连接到我们的 TFS 要读取当前连接 我需要 TeamFoundationServerExt 对象 我应该能够从 dte2 对象中获取该对象 现在我找到了数百个示例
  • swift 中带有字符的单引号

    我已经完成了 C C Java 这些语言告诉我字符用单引号括起来 主要是在遵守正确的语法时 但字符串是双引号的 Swift 的语法是否只允许字符位于单引号内 或者提供这种语法背后有一些有效的原因 逻辑 let char1 Character