相关疑难解决方法(0)

为什么选择Struct Over Class?

使用Swift,来自Java背景,为什么要选择Struct而不是Class?看起来它们是相同的,使用Struct提供更少的功能.为什么选择呢?

struct class design-principles swift

465
推荐指数
10
解决办法
14万
查看次数

swift中`let`和`var`有什么区别?

是什么区别let,并var在苹果的雨燕语言?

根据我的理解,它是一种编译语言,但它不会在编译时检查类型.这让我感到困惑.编译器如何知道类型错误?如果编译器没有检查类型,那么生产环境是不是有问题?

swift

302
推荐指数
8
解决办法
16万
查看次数

快速语言中的结构与类

来自Apple的书"结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的."

任何人都可以让我理解这意味着什么,对我来说,类和结构似乎是一样的.

swift

184
推荐指数
6
解决办法
7万
查看次数

不可变与不可修改的集合

集合框架概述:

不支持修改操作(例如add,removeclear)的集合称为不可修改.不可修改的集合是可修改的.

另外保证Collection对象中没有可见变化的集合称为不可变.不可变的集合是可变的.

我无法理解这种区别.这里不可修改不可变
的区别是什么?

java collections immutability

156
推荐指数
5
解决办法
7万
查看次数

Collections.emptyMap()vs new HashMap()

我可以使用哪些情况Collections.emptyMap()?文档说如果我希望我的集合是不可变的,我可以使用这个方法.

为什么我想要一个不可变的空集合?有什么意义?

java collections

133
推荐指数
5
解决办法
4万
查看次数

Mutable对象和Immutable对象之间的区别

任何人请举例说明Mutable对象和Immutable对象之间的差异.

java terminology

102
推荐指数
5
解决办法
18万
查看次数

Swift中的不可变/可变集合

我指的是Apple的Swift编程指南,用于理解用Swift语言创建Mutable/immutable对象(Array,Dictionary,Sets,Data).但我无法理解如何在Swift中创建不可变的集合.

我想在Objective-C中看到Swift中的等价物

不可变阵列

NSArray *imArray = [[NSArray alloc]initWithObjects:@"First",@"Second",@"Third",nil];
Run Code Online (Sandbox Code Playgroud)

可变阵列

NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@"First",@"Second",@"Third",nil];
[mArray addObject:@"Fourth"];
Run Code Online (Sandbox Code Playgroud)

不变字典

NSDictionary *imDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil];
Run Code Online (Sandbox Code Playgroud)

可变字典

NSMutableDictionary *mDictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil];
[mDictionary setObject:@"Value3" forKey:@"Key3"];
Run Code Online (Sandbox Code Playgroud)

objective-c mutable immutability ios swift

83
推荐指数
4
解决办法
8万
查看次数

字符串作为hashmap中的键

我在过去一小时内阅读了很多帖子,但是我仍然不太清楚使用不可变对象作为Hashmap中的键的概念.我有一个哈希映射,其键作为字符串.hashmap中的值是MyStore,其中MyStore表示有关我拥有的商店的信息.String表示地址.在我的代码中,我的逻辑是,我首先在地图中查找该键,如果存在 - >获取其值,如果它不存在则将其放入hashmap中.我的经理告诉我,密钥将来会改变,那就是我的商店的地址将来会改变.他说在这种情况下,我首先检查密钥是否存在的逻辑不起作用.我不明白他的意思.我想非常清楚地理解以下几点 -

  1. hashmap的可变键和不可变键之间的区别.
  2. 如果使用可更改的不可变密钥会发生什么? - 我知道这没有意义,但我想清楚地了解我的经理在这里谈论的内容.
  3. 有些帖子谈论字符串,如果在哈希码中使用哈希码作为键,那么这意味着什么?
  4. 如果让我说我在我的hashmap中使用可变对象作为实现hashcode和equals的键,那么它会起作用吗?我假设它会,因为如果密钥更改,contains方法将查看密钥是否存在.如果它不存在,它将入门这样你就可以得到在未来它.

如果之前已经讨论过,我并不是要创建一个重复的帖子.如果我错过阅读有关我所有问题答案的帖子,请指出.如果没有,请以外行的方式解释我的上述问题,以便将来对其他读者有用:).随意编辑我的帖子的主题,以便将来如果有人有类似的问题,他们会直接降落在这里:)

java

16
推荐指数
1
解决办法
2万
查看次数

Set(Collection) - 插入多个元素

Set是一系列独特元素的无序集合.几乎与数组类似.

我想在一个Set中添加/插入多个元素String.但是只提供了一种方法,只能插入一个元素(接受单个Set元素作为参数参数),我收集了字符串(id).

插入(_:)

@discardableResult mutating func insert(_ newMember: Set.Element) -> (inserted: Bool, memberAfterInsert: Set.Element)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我尝试过:
我尝试创建一个非常类似于insert(_:)方法的扩展,但它可以接受多个Set元素.它与使用迭代而不是集合相同,但不需要在任何地方手动处理它.

extension Set {

    @discardableResult mutating func insert(_ newMembers: [Set.Element]) -> (inserted: Bool, memberAfterInsert: Set.Element) {

        newMembers.forEach { (member) in
            self.insert(member)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它应该工作,如果我按预期返回一个元组但不知道如何以及在哪里(哪一行)以及返回值的内容.

这是错误消息.

期望返回的函数中缺少返回'(inserted:Bool,memberAfterInsert:Set.Element)'

在此输入图像描述

什么可以解决这个问题.是否有更好的解决方案/方法来处理此操作?

tuples set ios swift swift-extensions

14
推荐指数
3
解决办法
5372
查看次数

Java集中对象的可变字段

我在假设,如果你有一个包含一个Java集<>内(或在地图<>对于这个问题的关键)的对象,所使用的任何字段,以确定身份或关系(通过纠正hashCode(),equals(),compareTo()等.)如果不对集合上的操作造成未指定的行为,则无法更改?(编辑:在其他问题中提到)

(换句话说,这些字段应该是不可变的,或者您应该要求从集合中删除对象,然后更改,然后重新插入.)

我问的原因是我正在阅读Hibernate Annotations参考指南,它有一个例子,其中有一个HashSet<Toy>但是Toy类有字段name并且serial是可变的并且也用于hashCode()计算......一个红旗在我脑海中消失了我只想确保理解它的含义.

java collections identity mutable

11
推荐指数
1
解决办法
4562
查看次数