gpt4 book ai didi

swift - swift 中的 nil 处理(可选链)

转载 作者:行者123 更新时间:2023-11-30 11:42:41 24 4
gpt4 key购买 nike

我正在用 swift 练习 Leetcode 问题。

我面临有关可选的问题,我理解这个概念。

但我不知道什么是正确的表达。

我实现了链表问题,它没有问题,但是当我检查链表包含答案时出现问题。

这里是链表会添加两个值(没问题)

  // Definition for singly-linked list.
public class ListNode {
public var val: Int
public var next: ListNode?
public init(_ val: Int) {
self.val = val
self.next = nil
}
}
class Solution {
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var carry = 0
var sum = 0
let head = ListNode(0)
var temp = head
var l1 = l1
var l2 = l2

while (l1 != nil)||(l2 != nil)||(carry != 0) {

if l1 != nil{
sum += l1!.val
l1 = l1?.next
}
if l2 != nil{
sum += l2!.val
l2 = l2?.next
}
carry = sum / 10
sum = sum%10

let newNode = ListNode(sum)
temp.next = newNode
temp = temp.next!
sum = carry

}
return head.next
}
}

链接列表包含值

    var l1 = ListNode(2)
l1.next = ListNode(4)
l1.next?.next = ListNode(3)
l1.next?.next?.next = ListNode(9)

var l2 = ListNode(5)
l2.next = ListNode(6)
l2.next?.next = ListNode(4)

有问题的代码(遍历链表以显示链表中包含的值)

    var a = Solution()
while( a.addTwoNumbers(l1, l2)?.next != nil){
print(l1.val)
//optional value error with a question mark.
l1 = l1.next?

}
print (l1.val)

我收到此错误:

error: day2_Add Two Numbers.playground:126:13: error: value of optional type 'ListNode?' not unwrapped; did you mean to use '!' or '?'? l1 = l1.next ^ !

我知道最后一个问号不应该被执行,因为它是一个可选值。

但是有一个错误。

请让我了解原因,并告诉我如何纠正它。(请使用可选的链接或绑定(bind))

最佳答案

因为 .next 可以是 nil 。让 l1 和 l2 是可选的。

所以。

var l1:ListNode? = ListNode(2)
l1?.next = ListNode(4)
l1?.next?.next = ListNode(3)
l1?.next?.next?.next = ListNode(9)

var l2:ListNode? = ListNode(5)
l2?.next = ListNode(6)
l2?.next?.next = ListNode(4)

var a = Solution()
var l3 = a.addTwoNumbers(l1, l2)
while l3 != nil {
print(l3?.val) // or print(l3!.val) because we sure it is not nil.
l3 = l3?.next
}

更新:我修复了你的遍历代码。 addTwoNumbers 结果应首先保存在单独的变量中,然后遍历它。 (在我的例子中l3)

关于swift - swift 中的 nil 处理(可选链),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com