小编Pal*_*ndo的帖子

lift的SiteMap中的冒号,下划线和星号是什么意思(条目:_*)?

我正在学习Scala并同时解除,我不得不理解用于在Boot.scala中初始化SiteMap的语法:

 val entries = Menu(Loc("Home", "/", "Home")) :: 
       Menu(Loc("Foo", "/badger", "Foo")) ::
       Menu(Loc("Directory Foo", "/something/foo", "Directory Foo")) :: Nil 
 LiftRules.setSiteMap(SiteMap(entries:_*))
Run Code Online (Sandbox Code Playgroud)

SiteMap参数的含义究竟是什么?我看到值条目是菜单列表.什么是冒号,下划线,明星?起初我以为它是列表中的一种方法,但我无法找到这样的定义......

scala lift

59
推荐指数
1
解决办法
9706
查看次数

当应用程序从后台恢复时,恢复动画停止的位置

CABasicAnimation在视图中无休止地循环重复图像块:

a = [CABasicAnimation animationWithKeyPath:@"position"];
a.timingFunction = [CAMediaTimingFunction 
                      functionWithName:kCAMediaTimingFunctionLinear];
a.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
a.toValue = [NSValue valueWithCGPoint:CGPointMake(image.size.width, 0)];
a.repeatCount = HUGE_VALF;
a.duration = 15.0;
[a retain];
Run Code Online (Sandbox Code Playgroud)

我已尝试按照技术问答QA1673中的描述"暂停并恢复"图层动画.

当应用程序进入后台时,动画将从图层中删除.为了补偿我听UIApplicationDidEnterBackgroundNotification,打电话stopAnimation和回应UIApplicationWillEnterForegroundNotification电话startAnimation.

- (void)startAnimation 
{
    if ([[self.layer animationKeys] count] == 0)
        [self.layer addAnimation:a forKey:@"position"];

    CFTimeInterval pausedTime = [self.layer timeOffset];
    self.layer.speed = 1.0;
    self.layer.timeOffset = 0.0;
    self.layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = 
      [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    self.layer.beginTime = timeSincePause;
}

- …
Run Code Online (Sandbox Code Playgroud)

core-animation ios

56
推荐指数
5
解决办法
2万
查看次数

嵌套方法的成本

在Scala中,可以在其他方法中定义方法.这将它们的使用范围限制在定义块内.我使用它们来提高使用几个高阶函数的代码的可读性.与匿名函数文字相比,这允许我在传递它们之前给它们有意义的名称.

例如:

class AggregatedPerson extends HashSet[PersonRecord] {
  def mostFrequentName: String = {
    type NameCount = (String, Int)
    def moreFirst(a: NameCount, b: NameCount) = a._2 > b._2
    def countOccurrences(nameGroup: (String, List[PersonRecord])) =
      (nameGroup._1, nameGroup._2.size) 

    iterator.toList.groupBy(_.fullName).
      map(countOccurrences).iterator.toList.
      sortWith(moreFirst).head._1
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何运行时成本,因为我应该知道嵌套方法定义?

关闭的答案有何不同?

methods scala

48
推荐指数
3
解决办法
6864
查看次数

在斯威夫特,这是什么!符号是指函数签名?

在Swift函数签名中,!后面的参数意味着什么?更具体地说,它是否意味着参数需要在传入之前解包,或者在传入时自动解包(这是自动).这是一个示例:

func annotationButtonTUI(sender: UIButton!) { }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该函数是UIButton的目标,因此无论发生什么事情!都会自动发生.

我的想法是它意味着你可以期待一个未包装的sender物体,所以你不需要尝试打开它.

swift

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

为什么非破坏空间不是java中的空白字符?

在寻找一种从解析的HTML中修剪不间断空间的正确方法的同时,我首先偶然发现java的斯巴达定义String.trim()至少是正确记录的.我想避免明确列出符合修剪条件的字符,所以我假设在Character类上使用Unicode支持的方法可以帮我完成工作.

那时我发现Character.isWhitespace(char)明确排除了不间断的空格:

它是Unicode空格字符(SPACE_SEPARATOR,LINE_SEPARATORPARAGRAPH_SEPARATOR),但不也是非打破空间('\u00A0','\u2007','\u202F').

这是为什么?

相应的.NET等价物的实现不那么有区别.

java unicode

30
推荐指数
5
解决办法
3万
查看次数

在Swift标准库中诊断EXC_BAD_INSTRUCTION

在iOS模拟器中运行的我的Swift应用程序在调试器中因运行时错误而停止EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, sub code=0x0).

根据WWDC 2014 Session 409,这通常是由于断言失败.

在Xcode 6的当前开发Beta版本中,调试器的堆栈跟踪和上述错误无法提供足够的信息来查看问题所在.我如何找出问题所在?

swift

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

Swift 3中的Python样式条件表达式

在我最近接触Python之后,我学会了以其形式欣赏其条件表达式的可读性X if C else Y.

当经典三元条件运算符?:具有作为第一个参数的条件时,感觉就像赋值完全是关于选择的.当您尝试嵌套多个三元运算符时会变得很难看......当条件在第一个表达式之后移动时,感觉更像是函数的数学定义.我发现这有时有助于代码清晰度.

作为代码kata,我想在Swift中实现python样式的条件表达式.似乎唯一可以让我获得所需语法的工具是自定义运算符.它们必须由符号组成.Unicode中的数学符号将逻辑上的双旋转符号标记为TRUE ?,划掉的版本不正确?...所以我选择了==||!=.到目前为止,在争取一段时间找到正确的优先权后,我有这样的:

// Python-like conditional expression

struct CondExpr<T> {
    let cond: Bool
    let expr: () -> T
}

infix operator ==| : TernaryPrecedence // if/where
infix operator |!= : TernaryPrecedence // else

func ==|<T> (lhs: @autoclosure () -> T, rhs: CondExpr<T>) -> T {
    return rhs.cond ? lhs() : rhs.expr()
}

func |!=<T> (lhs: Bool, …
Run Code Online (Sandbox Code Playgroud)

swift

8
推荐指数
1
解决办法
262
查看次数

dismissModalViewControllerAnimated重置contentOffset

我的表视图有问题.当解除其顶部呈现的模态视图控制器时,它总是滚动到顶部.我已经尝试过观察contentOffset使用KVO 的变化,但是让我看到它的观点却落后于它.

UITableViewController用户在模态对话框中完成任务时self.tableView.contentOffset,我打电话给:

[self dismissModalViewControllerAnimated:YES]
Run Code Online (Sandbox Code Playgroud)

随后,当viewWillAppear:(BOOL)animated调用时,self.tableView.contentOffset已经设置为0,0.

这应该发生吗?通过在呈现模态视图之前记住滚动位置并在解除模态视图后将其恢复到viewWillAppear中,我能够解决该问题.但这似乎是错误的.我错过了什么吗?

我发现在UIScrollView底层的Dismiss模式视图更改中描述了类似的问题.

uitableview ios

7
推荐指数
2
解决办法
1611
查看次数

MKMapRect并显示跨越第180个子午线的地图叠加层

我正在处理从Google Geocoding API返回的视口和边界.当对给定坐标进行反向地理编码时,服务返回具有各种粒度(国家,行政区域,地点,子地点,路线等)的若干结果.我想在给定地图上当前可见区域的结果上选择最合适的.

我已经确定了比较MKMapPoint位置视口,当前地图视口和它们的交点(使用MKMapRectIntersection函数)的面积比(²)的算法.只要位置视口不跨越180子午线,这就可以很好地工作.在那种情况下,他们的交集是0.

我已经开始调查原因并作为调试辅助工具我MKPolygon在地图上显示叠加层,以便为我提供有关正在发生的事情的视觉线索.为了避免我的代码在地理坐标之间进行转换而引入的错误MKMapRect,我使用Google结果中的原始坐标构建了多边形叠加,如下所示:

CLLocationCoordinate2D sw, ne, nw, se;
sw = location.viewportSouthWest.coordinate;
ne = location.viewportNorthEast.coordinate;
nw = CLLocationCoordinate2DMake(ne.latitude, sw.longitude);
se = CLLocationCoordinate2DMake(sw.latitude, ne.longitude);
CLLocationCoordinate2D coords[] = {nw, ne, se, sw};
MKPolygon *p = [MKPolygon polygonWithCoordinates:coords count:4];
Run Code Online (Sandbox Code Playgroud)

例如,有问题的位置,这里是为美国返回的视口,类型为country的最后结果,当在弗吉尼亚州的某处进行地理编码坐标时:

Southwest: 18.9110643, 172.4546967  
Northeast: 71.3898880, -66.9453948
Run Code Online (Sandbox Code Playgroud)

注意位于视口左下角的西南坐标是如何跨越180子午线的.当在地图上显示覆盖为多边形的此位置时,它会错误地显示在USA边框的右侧(大的棕色矩形,只有左下角可见):

美国的视口覆盖在地图上 俄罗斯的视口覆盖在地图上

类似地,显示俄罗斯的位置视口显示矩形位于俄罗斯边界左侧的错误位置.

当我将位置视口转换为MKMapPoints并且MKMapRect在地图视口(上图中的白色矩形)和位置视口之间没有找到交叉点时,这在视觉上确认存在类似的问题.

我计算地图rect的方式类似于这个SO问题中的答案:
如何将由NE和SW坐标组成的特定边界拟合到可见地图视图中?
... 除非坐标跨越第180个子午线,否则工作正常.测试MKMapRectMKMapRectSpans180thMeridian返回false,使构造方法不正确. …

mapkit ios

7
推荐指数
2
解决办法
6229
查看次数

初始化期间为namedtuple字段键入转换

我有一个几乎没有静态字段的类,并且可以从iterable初始化(比如输出csvreader).在__init__从字符串到数字对于他们中的一些进行类型转换:

class PerformanceTestResult(object):
    def __init__(self, csv_row):
        # csv_row[0] is just an ordinal number of the test - skip that
        self.name = csv_row[1]          # Name of the performance test
        self.samples = int(csv_row[2])  # Number of measurement samples taken
        self.min = int(csv_row[3])      # Minimum runtime (ms)
        self.max = int(csv_row[4])      # Maximum runtime (ms)
        self.mean = int(csv_row[5])     # Mean (average) runtime (ms)
        self.sd = float(csv_row[6])     # Standard deviation (ms)
Run Code Online (Sandbox Code Playgroud)

我正在考虑将它转换为a namedtuple,因为它没有太多其他内容.但我想在初始化期间保持类型转换.有没有办法做到这一点namedtuple?(我没有注意到工厂方法__init__的详细输出中的namedtuple方法,这让我暂停了默认初始化程序的工作原理.)

python namedtuple iterable-unpacking

7
推荐指数
1
解决办法
810
查看次数