小编Leo*_*ang的帖子

在dealloc中应该将什么样的属性设置为nil?

我正在使用ARC.ARC会自动释放所有属性dealloc吗?是否有必要手动设置所有公共属性和私有字段nil?有什么好的模式可以遵循吗?

objective-c ios automatic-ref-counting

5
推荐指数
1
解决办法
664
查看次数

如何转置 2D 矢量

如何在 Haskell 中表示二维数组整数,以便我可以在 O(1) 或 O(logN) 中使用 (i, j) 访问任何元素?

用 Data.Array 和 Data.Vector 定义有什么区别?哪个更实用

data Matrix = Vector (Vector Int)
Run Code Online (Sandbox Code Playgroud)

如果我如上定义,如何制作一个转置这个矩阵的函数?

例如:转置 a[[1,2,3],[4,5,6],[7,8,9]]将返回[[1,4,7],[2,5,8],[3,6,9]]

haskell

5
推荐指数
1
解决办法
284
查看次数

如何在没有触发器KVO的情况下设置值

我使用以下代码在对象上添加KVO.

[self.model addObserver:self
             forKeyPath:@"userName"
                options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
                context:nil];
Run Code Online (Sandbox Code Playgroud)

现在我想设置userName,如下所示.是的,它会触发KVO.

self.model.userName = @"testUser";
Run Code Online (Sandbox Code Playgroud)

但是,我想在没有触发器KVO的情况下设置值.怎么做?有没有像下面这样的方法允许我这样做?

[self.model setValue:@"testUser" forKey:@"userName" isSilent:YES];
Run Code Online (Sandbox Code Playgroud)

objective-c key-value-observing

4
推荐指数
2
解决办法
1645
查看次数

Haskell严格的字段

定义惰性字段时,在打印之前没有异常.

> data T = T Int deriving (Show)
> let t = T undefined
> t
T *** Exception: Prelude.undefined
CallStack (from HasCallStack):
  error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err
  undefined, called at <interactive>:3:7 in interactive:Ghci3
Run Code Online (Sandbox Code Playgroud)

使用严格的field(!Int),我认为undefined会立即进行评估,这将导致异常,但实际上,在打印之前它仍然没有评估.这是为什么?

> data X = X !Int deriving (Show)
> let x = X undefined
> x
*** Exception: Prelude.undefined
CallStack (from HasCallStack):
  error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err
  undefined, called at <interactive>:6:11 in interactive:Ghci5
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
1
解决办法
93
查看次数

如何在QuickCheck中生成特定的随机字符串?

在Haskell QuickCheck中,如何生成一个字符串,使其只包含字符'S'和'C','S'和'C'的位置是随机的?

例如,"SCCS","SSSS","CCCC","CSSCCS",""

我的用例是:我有两个功能countCAndS :: String -> (Int, Int),countCAndS' :: String -> (Int, Int).它们具有相同的类型签名.我想编写一个quickcheck属性,以便我可以将相同的字符串传递给这两个不同的函数,并检查输出是否相同.

haskell quickcheck

4
推荐指数
1
解决办法
314
查看次数

不能定义多个可执行文件

我在app文件夹中有两个文件

app/
|-- Main.hs
|-- SomeFunc2.hs
Run Code Online (Sandbox Code Playgroud)

SomeFunc2.hs仅仅是打印不同的字符串

module SomeFunc2 where

import Lib

main :: IO ()
main = putStrLn "someFunc2"
Run Code Online (Sandbox Code Playgroud)

当我package.yaml像这样定义多个可执行文件时

executables:
  multiexes-exe:
    main:                Main.hs
    source-dirs:         app
    ghc-options:
    - -threaded
    - -rtsopts
    - -with-rtsopts=-N
    dependencies:
    - multiexes

  somefunc2-exe:
    main:                SomeFunc2.hs
    source-dirs:         app
    ghc-options:
    - -threaded
    - -rtsopts
    - -with-rtsopts=-N
    dependencies:
    - multiexes
Run Code Online (Sandbox Code Playgroud)

我有错误:

? stack build
Building all executables for `multiexes' once. After a successful build of all of them, only specified executables will …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-stack

4
推荐指数
1
解决办法
721
查看次数

从模块重新导出函数

我有这样的模块

module A where

import qualified Data.Maybe as Maybe

fromMaybe = Maybe.fromMaybe
Run Code Online (Sandbox Code Playgroud)

是否可以从中重新导出一些功能Data.Maybe?我不想重新导出整个Data.Maybe模块,只是一些功能,比如fromMaybe.

haskell

4
推荐指数
1
解决办法
332
查看次数

如何简化错误处理(IO(任一ab))

我使用以下场景作为示例来学习如何以简单的方式处理错误.该场景基本上是从环境变量读取文件路径,然后使用文件路径读取和打印文件.

下面的代码有效,但我不喜欢printFile它,因为它有嵌套case of,有点难读.我想知道是否有一种干净的方法来摆脱它并保持printFile功能平坦而不使用lookupEnv

您将如何简化此错误处理流程?

module Main where

import Control.Exception (IOException, handle, throw)
import System.Environment (getEnv)
import System.IO.Error (isDoesNotExistError)

data MissingError
  = MissingEnv String
  | MissingFile String
  deriving (Show)

main :: IO ()
main = do
  eitherFile <- printFile
  either print print eitherFile

getEnv' :: String -> MissingError -> IO (Either MissingError String)
getEnv' env err = handle (missingEnv err) $ Right <$> (getEnv env)

readFile' :: FilePath -> MissingError -> IO (Either …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
2
解决办法
317
查看次数

如何使用CallStack引发异常?

我有一个Exception type UnknownException,我想在抛出它时包括CallStack。

module Main where

import Control.Exception (Exception, throw)

newtype UnknownException = UnknownException
  { caller :: String
  } deriving (Show)

instance Exception UnknownException

main :: IO ()
main = willThrow

willThrow :: IO ()
willThrow = throw $ UnknownException "willThrow"
Run Code Online (Sandbox Code Playgroud)

我想要上面的示例打印这样的日志

example-exe: UnknownException {caller = "willThrow"}
CallStack (from HasCallStack):
  willThrow, called at app/Main.hs:16:13 in main:Main
  main, called at app/Main.hs:13:8 in main:Main
Run Code Online (Sandbox Code Playgroud)

但实际上打印:

example-exe: UnknownException {caller = "willThrow"}
Run Code Online (Sandbox Code Playgroud)

另外,在Haskell的异常中包括CallStack是一个好习惯吗?

haskell exception

4
推荐指数
1
解决办法
127
查看次数

如何从 package.yml 生成 .cabal 文件

我删除了 package.yml 文件以使用 .cabal 文件。现在我想尝试在 package.yml 中定义所有内容,并让 stack 自动生成 .cabal 文件。

但是当我手动将 .cabal 文件转换为 package.yml 并删除 .cabal 文件并运行时stack build,它显示了这个错误:

Stack looks for packages in the directories configured in the 'packages' variable defined in your stack.yaml
The current entry points to /Users/leo/zhangchiqing/hello/ but no .cabal file could be found there.
Run Code Online (Sandbox Code Playgroud)

如何从 package.yml 生成 .cabal 文件?

haskell cabal haskell-stack

3
推荐指数
2
解决办法
765
查看次数