gpt4 book ai didi

Swift - 变量作为 if 语句的一部分进行更新,但随后会恢复

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

我正在构建一个浏览器,然后它会关闭并从输入的 URL 的各种 API 中获取一些数据。我已经启动并运行了基本控件,但我对某些代码感到困惑,这些代码旨在在用户未输入 URL 的情况下将“HTTP://”附加到 URL 的开头。

func loadAddressURL(URLpath: String) {


//add 'http' if not entered.

var first4 = Range(start: URLpath.startIndex,
end: advance(URLpath.startIndex, 4))

var URL = URLpath
println(URL)

if URLpath.substringWithRange(first4) != "http" {
var URL = "http://" + URLpath
println(URL)

}

println(URL)

let requestURL = NSURL(string: URL)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}

在第一次打印时,URL 在用户输入时出现。 If 语句中的第二个打印语句按预期显示添加了“HTTP://”的值,但是在 if 语句完成后,URL Var 返回到用户输入的原始字符串,如果我可以找出原因。有任何想法吗?

最佳答案

问题出在变量作用域上。如果您查看代码,您会在函数内部的顶层定义一个变量 URL。然后比较前缀并附加 http,然后在 if 语句中定义一个新变量(现在已确定作用域)。因此,if 外部的 URL 变量与 if 内部的变量不同,因此您对 URL 的更改不会在 if 语句外部看到。

简单做如下修改,应该就可以了,

func loadAddressURL(URLpath: String) {


//add 'http' if not entered.

var first4 = Range(start: URLpath.startIndex,
end: advance(URLpath.startIndex, 4))

var URL = URLpath
println(URL)

if URLpath.substringWithRange(first4) != "http" {
URL = "http://" + URLpath
println(URL)
}

println(URL)

let requestURL = NSURL(string: URL)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}

关于Swift - 变量作为 if 语句的一部分进行更新,但随后会恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964724/

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