【问题标题】:Swift 2.0 calling a struct function from the outsideSwift 2.0 从外部调用结构函数
【发布时间】:2015-11-20 21:51:03
【问题描述】:

我对编程很陌生,而且我是 Swift 2.0 的新手,所以这可能是一个愚蠢的问题。 但我有:

struct Geometry {
static let Pi : Double = 3.14159265358979323846 

func get_angle(x1: Int, y1: Int, x2: Int, y2:Int) -> Double { 
...
func get_angle(point1 : CGPoint , point2 : CGPoint) -> Double {

我可以通过执行“Geometry.Pi”来访问 Pi,它工作得很好。 但由于某种原因,我无法访问 get_angle 函数。 我尝试过“Geometry.get_angle(x1, y1: y1, x2: x2, y2: y2)”,但随后它抱怨“调用中的额外参数 'y1'” 我试图通过在函数声明之前添加 _ 来删除所有函数变量名称,如下所示:

func get_angle( x1: Int, _  y1: Int, _ x2: Int, _  y2:Int) -> Double {

并将其命名为:“ Geometry.get_angle(x1, y1, x2, y2) ” 但随后它抱怨“无法使用类型的参数列表调用'get_angle'('Int','Int','Int','Int')” 为什么我不能这样做?是这样的想法。。 奇怪的是,当我开始输入“Geometry.get_an”时,建议框出现了,看起来很奇怪。我在这里有一张照片:http://imgur.com/ebciWjo 如果有人想看看。它给了我选项:Geometry.get_angle(Geometry),但 Geometry 不是变量类型。

我本质上想要做的是将一些全局函数和全局变量放在一个“常量”/“通用”文件中——就像你在其他语言中所做的那样。 我知道每个函数基本上都是一个全局函数,只要它没有被标记为私有。 我用这个: Global constants file in Swift 作为我创建几何时的参考..

谁能帮我在 swift 2.0 中制作一个包含变量和函数的常量/通用文件?

编辑: 只是为了澄清一下,如果我创建一个 Geometry 变量,我可以很好地访问该函数,但这不是我想要的。我想要全局函数。 另外,我尝试将它们移出结构,但出现相同的错误,“无法使用类型参数列表调用 'get_angle' ('Int', 'Int', 'Int', 'Int')”

【问题讨论】:

  • 与您的问题无关,但请注意有一个预定义的常量M_PI

标签: ios swift


【解决方案1】:

你需要使函数static:

struct Geometry {
    static let Pi : Double = 3.14159265358979323846

    static func get_angle(x1: Int, y1: Int, x2: Int, y2:Int) -> Double {
        return 1
    }
}

当函数不是静态的时,你可以这样调用它:

Geometry().get_angle( ... )

...但这会创建一个新的 Geometry 结构,在您的情况下不需要。

【讨论】:

  • 我现在不觉得自己很愚蠢吗...我知道我必须将变量设为静态,但从未在函数上反映过它。谢谢人 :) 没有静态结构这样的东西吗?
  • @Skrutten 不客气。据我所知,swift 不允许创建静态结构。
  • 一个没有案例的枚举可以是一个很好的组合事物的方法(因为不可能创建一个实例)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 2014-10-01
相关资源
最近更新 更多