小编Ben*_*ohn的帖子

我可以使用 YAML 元数据设置命令行参数吗

Pandoc 支持Markdown 文档中的YAML 元数据块。这可以设置标题和作者等。它还可以通过更改字体大小、边距宽度和为包含的图形指定的框架大小来操作 PDF 输出的外观。这里提供很多细节。

我想使用元数据块来记住我应该使用的命令行参数,例如--toc--number-sections。我试过了,将以下内容添加到我的降价顶部:

---
title: My Title
toc: yes
number-sections: yes

---
Run Code Online (Sandbox Code Playgroud)

然后我使用命令行:

pandoc -o guide.pdf articheck_guide.md
Run Code Online (Sandbox Code Playgroud)

确实产生了一个目录,但没有给章节编号。我想知道这是为什么,如果有办法可以从文档中指定这种东西,这样我就不需要在命令行中添加它。

markdown yaml pandoc

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

防止小负数打印为"-0"

如果我在Objective-C中执行以下操作:

NSString *result = [NSString stringWithFormat:@"%1.1f", -0.01];
Run Code Online (Sandbox Code Playgroud)

它会给出结果 @"-0.0"

@"0.0"在这种情况下,有人知道如何强制结果(没有" - ")吗?

编辑:我尝试使用NSNumberFormatter,但它有同样的问题.以下还产生@"-0.0":

double value = -0.01;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:1];
[numberFormatter setMinimumFractionDigits:1];
NSString *result = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:value]];
Run Code Online (Sandbox Code Playgroud)

objective-c zero nsnumber nsstring nsnumberformatter

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

使用setDoesRelativeDateFormatting:YES和setDateFormat:with NSDateFormatter

NSDateFormatter对生成相关日期有很好的支持,例如"今天","明天","昨天",这些都是当前语言支持的.一个很大的优点是所有这些都已经为您本地化 - 您不需要翻译字符串.

您可以使用以下命令打开此功能:

[dateFormatter setDoesRelativeDateFormatting: YES];
Run Code Online (Sandbox Code Playgroud)

不利的一面是,这似乎只适用于使用其中一种预定义格式的实例,例如:

[dateFormatter setDateStyle: NSDateFormatterShortStyle];
Run Code Online (Sandbox Code Playgroud)

如果您设置日期格式化程序以使用自定义格式,如下所示:

[dateFormatter setDateStyle: @"EEEE"];
Run Code Online (Sandbox Code Playgroud)

然后当你打电话:

[dateFormatter stringFromDate: date];
Run Code Online (Sandbox Code Playgroud)

......你会回来一个空字符串.

我希望能够在可能的情况下获得相关字符串,并在不支持时使用我自己的自定义格式.

cocoa-touch nsdate nsdateformatter nscalendar ios

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

函数数组<Optional <T >> - >可选<Array <T >>

这是我正在尝试做的事情:

extension Array<Optional<T>> {   
  func unwrap() -> Optional<Array<T>> {
    let a = self.flatMap() { a in
      switch a {
      case Optional.Some(let x): return [x]
      case Optional.None: return []
      }
    }
    if a.count == self.count {
      return Optional.Some(a)
    } else {
      return Optional.None
    }   
  } 
}
Run Code Online (Sandbox Code Playgroud)

但是,它没有编译错误Use of undeclared type T.这是我想要使用它的方式:

let a = [Optional.Some(2), Optional.Some(3), Optional.Some(4)]
let b = [Optional.Some(1), Optional.None]
a.unwrap() // Optional[2, 3, 4]
b.unwrap() // nil
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题呢?或者快速没有这种可能性?

arrays generics optional swift swift2

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

在Swift中实现哈希合并器

我正在扩展struct一致Hashable.我将使用DJB2哈希合并器来完成此任务.

为了便于为其他事情编写哈希函数,我想扩展Hashable协议,以便我的哈希函数可以像这样编写:

extension MyStruct: Hashable {
  public var hashValue: Int {
    return property1.combineHash(with: property2).combineHash(with: property3)
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将扩展名编写为Hashable`combineHash(with :)时,就像这样:

extension Hashable {
  func combineHash(with hashableOther:Hashable) -> Int {
    let ownHash = self.hashValue
    let otherHash = hashableOther.hashValue
    return (ownHash << 5) &+ ownHash &+ otherHash
  }
}
Run Code Online (Sandbox Code Playgroud)

...然后我得到这个编译错误:

/Users/benjohn/Code/Nice/nice/nice/CombineHash.swift:12:43:协议'Hashable'只能用作通用约束,因为它具有Self或相关类型要求

这是Swift不会让我做的事情,还是我只是做错了并得到一个无用的错误信息?


除了来自JAL的评论链接到一个快速哈希函数的代码审查,这也是马丁写的,它提供了下面接受的答案!他在讨论中提到了一个不同的哈希合并器,它基于c ++ boost库中的一个.讨论确实值得一读.替代组合器具有较少的冲突(在测试的数据上).

hash swift

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

将Swift序列转换为相邻对

鉴于我在Swift中有一个数组[1,2,3,4],一个方法pairs()会将其转换为元组数组:[(1,2), (2,3), (3,4)].

以下是一些pairs()应该如何表现的例子:

  • pairs([])应该返回,[]因为它没有对.
  • pairs([1])也应该返回[],因为它没有对.
  • pairs([1,2])应该是[(1,2)].它只有一对.

我可以编写代码来执行此操作Array,但我希望pairs()可以作为扩展Sequence,以便它返回一Sequence对.这将使得它可用在任何序列,并与方法,如兼容map,reduce,filter,等.

我如何创建Sequence这样的?我如何编写方法以Sequence这种方式转换任何方法,以便尽可能灵活地使用它?

functional-programming sequence swift

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

将Swift Array &lt;Result &lt;X,Error &gt;&gt;转换为Result &lt;Array &lt;X&gt;,Error&gt;

我有一个Swift数组Result,像这样:

let tuple: [Result<Term, TermError>] = /* code here */
Run Code Online (Sandbox Code Playgroud)

我想把它里面翻过来,把结果拉出来给一个结果,把数组推到里面。

let tuple2: Result<[Term], TermError> = /* How? */
Run Code Online (Sandbox Code Playgroud)

tuple2应该是.failure,如果任何tuple.failure。否则是.success([tuple-elements-in-here])

我想我可以提出一些可以使这项工作奏效的方法,但是我觉得应该有一种相当干净的方法来实现这一目标?

generics swift

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

对UIScrollView使用UIScreenEdgePanGestureRecognizer

我需要一个分页UIScrollView来检测屏幕边缘的平移方式UIScreenEdgePanGestureRecognizer,而不是检测到各处的平移UIPanGestureRecognizer.

我可以从中获取[scrollView panGestureRecogniser]实例scrollView,但我无法将其替换为实例UIScreenEdgePanGestureRecognizer.

它也不可能改变[[scrollView panGestureRecogniser] delegate]为我控制下的一个可以停止滚动手势的对象,除非它们从边缘开始,因为UIScrollView不会让你改变它的UIGestureReconiser代表.

uiscrollview uikit uigesturerecognizer

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

如何让约束自动调整大小并重新定位横向键盘键

我很难弄清楚如何通过约束来获得我想要的结果.我可以通过编程方式执行此操作,但似乎应该有更好的方法.

基本上我有一个键盘.

  1. 最左边的键(Q)和最右边的键(P)应该是从左侧和右侧的3个点.

  2. Q键和P键之间的8个键应在Q和P键之间等间隔

  3. 键应该在宽度上拉伸以填充Q和P键之间的整个空间宽度,同时仍然保持彼此之间的相等空间.

基本上键盘应该像Apple的原生键盘在横向旋转时那样做.

这可以通过约束来完成,还是我需要在没有约束的情况下以编程方式执行此操作?

objective-c ios autolayout nslayoutconstraint ios8

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

在 Swift 中查找最高有效位

我需要在 Swift 中找到整数的最高有效位 (MSB)的值(或位置) 。

例如:

  • 输入数量: 9
  • 输入为二进制: 1001
  • 二进制MS: 1000 ->(十进制为 8)
  • MS位置(十进制): 3(因为1<<3 == 1000

许多处理器(Intel、AMD、ARM)都有这方面的说明。在c中,这些是暴露的。这些指令是否可以通过库函数在 Swift 中类似地使用,或者我是否需要实现一些操作

该值对我来说更有用。

如果返回位置,则可以通过单次移位轻松导出该值。

相反,除非有快速的汉明权重/弹出计数功能,否则从值计算位置并不那么容易。

bit-manipulation swift

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