快速编译器的奇怪行为

2024-03-02

我在 swift 中有以下功能:

func f() -> Int
{
    let a = String("a")
    let b = a.unicodeScalars
    println(b[b.startIndex].value)

   //return b[b.startIndex].value
   return 1
}

如果我取消注释第一个 return 语句并注释第二个 return 语句,则会出现编译器错误:

找不到成员“值”

为什么即使我可以在 println 函数调用中访问该成员,也会发生这种情况?

EDIT:

为了使问题更清楚,请考虑以下代码:

struct point {
    var x: UInt32
    var y: UInt32

    init (x: UInt32, y: UInt32) {
        self.x = x
        self.y = y
    }
}

func f () -> Int {
    var arr = [point(x: 0, y: 0)]
    return arr[0].x
}

在这种情况下,编译器错误是:

UInt32 无法转换为 Int

我的问题是:即使两种情况下问题相同,为什么编译器错误却不同?


value返回一个UInt32。将其投射到Int.

return Int(b[b.startIndex].value)

或者,您可以让该函数返回一个UInt32正如@GoodbyeStackOverflow 提到的。

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

快速编译器的奇怪行为 的相关文章

随机推荐

  • C# 通用字典 TryGetValue 找不到键

    我有这个简单的例子 using System using System Collections Generic namespace ConsoleApplication1 class Program static void Main str
  • 如何避免一遍又一遍地创建同一个对象?

    如前所述 我继续研究我的 TCP 套接字今天早上 https stackoverflow com questions 74812333 我发现每次我通过这样的套接字发送消息时 套接字的数量都会不断增加 这仅仅意味着我不断创建和打开新的套接字
  • 将最后一个值添加到数据框的顶部。

    最后一个值是 12 我想将最后一个值移到第一个值 这意味着我想附加数据框并将最后一个值移动到数据框的顶部 同时向下移动较早的值 请检查预期的输出 R code a lt c 11 243 121 42 12 a lt data frame
  • Linux - 修改文件修改/访问/更改时间[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我读了一篇关于新隐写方法的文章 时间在我这边 文件系统元数据中的隐写术 http www sciencedirect com scienc
  • 从 mysqldb 查询获取原始十进制值

    我正在使用 MySQLdb 包在 python 中执行 mysql 查询 代码看起来像这样 c db cursor c execute select from table output for row in c output append
  • Pandas - 查找没有 Nan 值的最长拉伸

    我有一个 pandas 数据框 df 其示例如下 time x 0 1 1 1 2 Nan 2 3 3 3 4 Nan 4 5 8 5 6 7 6 7 5 7 8 Nan 真正的框架要大得多 我试图找到 x 系列中最长的非 NaN 值 并打
  • 将可排序表与复选框总和输出相结合

    我当前的代码有一个复选框求和函数 它从数据库中获取值 我还尝试将另一个 Javascript 代码应用到我的表中 以允许我对行中的数据进行排序 例如 对行进行排序后 将所有 5 个 ACER 资产显示在顶部 我想勾选前 5 个显示的 ACE
  • 在 Oracle PL SQL 中检索 xml 元素的值

    有谁知道如何检索的值
  • Ruby on Rails 回调,:before_save 和 :before_create 之间有什么区别?

    你能详细解释一下什么是 before save and before createRuby on Rails 回调是什么 它们与 Rails 验证有什么关系 验证是否发生在 before save or before create 在 Ra
  • 从注入的 DLL 中挂钩 DirectX EndScene

    我想绕道EndScene从任意 DirectX 9 应用程序创建一个小的覆盖层 例如 您可以使用 FRAPS 的帧计数器叠加层 该叠加层在激活时会显示在游戏中 我知道以下方法可以做到这一点 创建一个新的d3d9 dll 然后将其复制到游戏路
  • 如何在具有多个预测变量的混合模型中绘制随机截距和斜率?

    当混合模型具有多个预测变量时 是否可以绘制其随机截距或斜率 对于一个预测器 我会这样做 generate one response two predictors and one factor random effect resp lt ru
  • 在 Emacs 中禁用鼠标滚动

    我在互联网上找到的所有内容都告诉我 emacs 默认情况下禁用鼠标滚动 但我的鼠标非常热情 当我的拇指太靠近笔记本电脑上的触控板时 就会滚动到它的核心内容 我有not允许这样做 这是我的 emacs 来证明这一点 Line by line
  • 如何从字符串中删除 unicode ? [复制]

    这个问题在这里已经有答案了 我用过这个方法 https stackoverflow com questions 39993715 how to remove unicode u00a6 from string 但它不起作用 我的代码包含如下
  • 在 Golang 中将 Value 类型转换为 Map?

    我从 reflect 包中的函数调用中获取此返回值 lt map string string Value gt 想知道我是否可以访问返回值中的实际地图 如果可以 如何访问 EDIT 这就是我进行返回 Value 对象的调用的地方 它返回 l
  • 教授 C 语言时,在指针之前或之后教授数组哪个更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于那些有课程开发经验的人来说 关于数组的最佳策略是什么 我见过一些学校在教授变量和控制结构之后教授数组 甚至通常在教授函数之前 这允许教授一些
  • 如何使用 messages.properties 文件中的参数?

    In 这个问题 https stackoverflow com q 5600055 456218 它指出 可能有类似的情况 message myMessage This message is for 0 in 1 但我不知道如何向其传递参数
  • 如何让Xcode找到FacebookSDK.h文件?

    它显示 未找到 FacebookSDK FacebookSDK h 文件 但我可以跳转到 import 上的定义 它会将我带到该文件 一旦我添加了 import 它现在就知道 FBFriendPickerDelegate 是什么 并且该行现
  • 有没有如下图移动光标的快捷键?

    我用的是笔记本 没有鼠标 打字后prop并按tab Visual Studio会自动给我一个属性模板 紧迫tab将在之间移动光标type and propertyname占位符 我想在完成属性模板后将光标移至新行 有没有捷径可以做到这一点
  • 在谷歌静态地图上使用自定义图像标记?

    如何在谷歌静态地图上有自定义图像标记 我需要网址格式 这是我尝试过的 但它有默认的标记图像 这就是你想要的 对于自定义图像 请将icon url之后的markers Format icon url lat lng Example icon
  • 快速编译器的奇怪行为

    我在 swift 中有以下功能 func f gt Int let a String a let b a unicodeScalars println b b startIndex value return b b startIndex v