小编jye*_*yet的帖子

Dispatch group - 无法通知主线程

在GCD上阅读Swift 3 evolution之后,我正在尝试创建调度组.问题是group.notify(queue:当我DispatchQueue.main作为队列传递时不通知,尽管它确实适用于后台队列.

此外,我不确定我的语法是否正确,因为我试图将代码从Swift 2转换为Swift 3.

typealias CallBack = (result: Bool) -> Void
func longCalculations (completion: CallBack) {

let backgroundQ = DispatchQueue.global(attributes: .qosBackground)

    let group = DispatchGroup()  
    var fill:[Int] = [] 
    for item in 0...200 {
        group.enter() 
        if item > 50 {
            fill.append(item)
        }
        group.leave() 
    }

//Below in the notify argument If I pass `backgroundQ`, it seems to work correctly but not when DispatchQueue.main is passed.
Run Code Online (Sandbox Code Playgroud)

此代码不起作用

group.notify(queue: DispatchQueue.main, execute: {
    completion(result: true)
    })
 }
Run Code Online (Sandbox Code Playgroud)

这工作正常 …

grand-central-dispatch swift swift3

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

如何反转字符串中的字符,保留原始索引处的数字?

我最近开始学习Haskell.我试图反转包含字符和数字的字符串.字符串将被反转,保持原始位置的数字.

原始字符串="H1AW2J1"

反转= J1WA2H1

我试图遵循我在Swift中使用的模式.

  1. 过滤数字,然后反转字符串.
  2. 找到原始字符串中的数字索引.
  3. 将从步骤2获得的索引处的数字插入到步骤1的字符串中.

以下是按照上述步骤操作的代码.

reversChars"H1AW2J1"返回"JWAH"

reversedChars  = reverse . filter isLetter
Run Code Online (Sandbox Code Playgroud)

索引返回元组.

indexes xs = [(x, elemIndex x xs) | x <- xs]
Run Code Online (Sandbox Code Playgroud)

[('H',Just 0),('1',Just 1),('A',Just 2),('W',Just 3),('2',Just 4),('J' ,只是5),('1',只是1)]

问题

  1. 如何在相应的索引中插入数字 reversedChars
  2. elemIndexJust 1为多次出现1 返回相同的索引.

haskell

3
推荐指数
1
解决办法
364
查看次数

有界类型类如何用于自定义数据类型?

对于Int8,有界范围是

minBound :: Int8 -- -128
maxBound :: Int8 -- 127
Run Code Online (Sandbox Code Playgroud)

如果我将两个Int8整数相加

(127 :: Int8) + (10 :: Int8) --  -119
Run Code Online (Sandbox Code Playgroud)

为什么它不显示超出范围的错误?

如果创建数据类型并添加Bounded实例:

newtype Boost = Boost Int
    deriving (Eq, Show)

instance Num Boost where
    (Boost a) + (Boost b) = Boost (a+b)

instance Bounded Boost where
    minBound = Boost 1
    maxBound = Boost 10

(Boost 10) + (Boost 12) -- Boost 22
Run Code Online (Sandbox Code Playgroud)

显然,它的行为不像Int8,那么如何为自定义数据类型创建一个有界实例?

haskell

3
推荐指数
1
解决办法
117
查看次数

标签 统计

haskell ×2

grand-central-dispatch ×1

swift ×1

swift3 ×1