Swift:结构与类的指针

时间:2015-10-15 22:24:11

标签: swift class struct

我了解structsswift pass-by-value structencapsulating。我使用structstructs一些信息添加inout到一个集合,然后更改其值的一小部分。然而;我似乎遇到了struct未正确更新的问题,即使我在参数需要struct的地方撒了关键字pointer。我的直觉是为class分配内存并在其<?php //blablabla my php stuff here... ?> <h2 class="page_title"> <?=htmlentities($db_field['Title'])?> </h2> <a onclick="showAndroidToast('<?=$_SESSION[\'user_id\']?>','<?=$db_field[\'ID\']?>'); <img src="/mobile/images/plus.png" style="width:25px;height:25px;float:right;margin-top:15px"> </a> 的集合中引用它。简单地使用 function wypisz() { var liczba1 = parseInt(document.getElementById("pole1").value); var liczba2 = parseInt(document.getElementById("pole2").value); var napis = ""; for (i=liczba1; i<=liczba2; i++) { napis = napis + i + " "; console.log('inseide'); } document.getElementById("wynik").innerHTML = napis; }是否有意义,即使我需要的是可以改变的值列表。

2 个答案:

答案 0 :(得分:1)

如果你需要引用语义,那么绝对使用一个类。如果您希望能够在数据结构以及其他位置修改对象,那么您就需要一个类。使用类来获取引用语义是完全合理的。

同样你知道,inout on a function parameter实际上并不意味着通过引用传递。实际发生的是你的结构的副本是由函数创建的。然后在函数中修改此副本,然后将其复制回原始变量。

答案 1 :(得分:0)

没有你的代码,我无法看到你做错了什么,但它对我有用 - 游乐场最小的例子:

struct Grimxn {
    var first: Int
    var second: Int
}

func modify(inout v: Grimxn) {
    v.first++
    v.second--
}

var a = Grimxn(first: 1, second: 2)
print("\(a)") // "Grimxn(first: 1, second: 2)\n"
modify(&a)
print("\(a)") // "Grimxn(first: 2, second: 1)\n" - as required?

我当然不想使用指针 - 为什么在Swift中使用指针 - 使用C!