小编Bil*_*ill的帖子

我在哪里可以学习为Scala宏构建AST?

在哪里我可以学习如何构建Scala的宏生成的AST?

Scaladoc不像我想的那样有用.例如:

abstract def Apply(sym: Universe.Symbol, args: Universe.Tree*): Universe.Tree
A factory method for Apply nodes.
Run Code Online (Sandbox Code Playgroud)

但是我如何弄清楚Apply节点是什么?我在哪里可以找到AST的节点类型列表,以及它们如何组合在一起?

macros scala scala-macros

39
推荐指数
2
解决办法
4370
查看次数

在iOS 7上,如果控制器最终包含在标签栏控制器中,则使用工具栏推送控制器会留下无法使用的空间

在我的iOS应用程序中,我的窗口的rootViewController是一个标签栏控制器,其层次结构如下:

  • 的UITabBarController
    • UINavigationController 1
      • FirstContentController
    • UINavigationController 2
      • ...
    • UINavigationController 3
      • ...
    • ...

当用户点击某一行时FirstContentController,一个实例SecondController将被推送到其导航控制器上.SecondContentControllerhidesBottomBarWhenPushedYES在其init方法和套self.navigationController.toolbarHiddenNOviewWillAppear:.

在iOS 6中,用户将挖掘该行FirstControllerSecondController会得到推到导航控制器.因为它已hidesBottomBarWhenPushed设置,它将隐藏标签栏,并且在转换动画完成时,SecondController它将在屏幕上显示其工具栏.

但是,在iOS 7下进行测试时,其hidesBottomBarWhenPushed行为似乎已发生变化.我现在看到的是:

  • 标签栏隐藏,如预期的那样
  • 按预期显示工具栏
  • 在工具栏和内容视图之间出现一个无法使用的空间,正好有49像素高(标签栏的高度)

差距完全无法使用 - 它不响应触摸,如果我clipsToBounds在主视图上设置为YES,则没有任何内容.经过大量的调试和检查子视图层次结构后,看起来iOS的自动调整机制将视图控制器的视图调整为高度411(在iPhone 5上).应该是460到达工具栏,但布局系统似乎包括一个"鬼"49像素高的标签栏.

如果视图控制器的标签栏控制器为其父容器,则只会出现此问题.

在iOS 7上,当按下新控制器时,如何使标签栏消失并且工具栏无缝滑动到位,并且视图还占用导航项和工具栏之间的整个空间?

UPDATE

经过进一步调查后,只有在SecondController edgesForExtendedLayout设置为时才会发生这种情况UIRectEdgeNone.但是,除非我将该属性设置为,否则UIRectEdgeNone视图的框架太长并且在工具栏下方延伸,在该工具栏中无法看到或与之交互.

iphone objective-c uinavigationcontroller ios ios7

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

寻找可以处理Haskell的Web主机

我正在寻找一个让我运行Haskell Web应用程序的Web主机.VPS对我来说似乎很有吸引力,因为你可以运行你想要的任何东西.但是一些云主机在硬盘空间和带宽方面提供了非常好的可扩展性.

有没有人知道主机会让我运行像Haskell这样的奇特语言,但也可以无缝扩展我的主机可用的硬盘空间/ RAM /带宽/ CPU?

hosting haskell

34
推荐指数
3
解决办法
5564
查看次数

在UITableView中使用插入行

我希望我的UITableView的行为类似于联系人编辑器中的表格,即用户应该点击编辑,并且每个部分的底部应该出现一个"添加新类别"行.

我使用下面的代码来执行此操作,但问题是没有平滑过渡,因为在联系人中.相反,新行突然出现.我怎样才能获得动画?

另外,我如何回应"添加新类别"行的点击?在我当前的实现中,该行不可单击.

用户开始编辑时是否需要重新加载数据?我这样做是因为否则不会绘制插入行.

谢谢.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tableView setEditing:editing animated:animated];
    [tableView reloadData];
}

- (NSInteger)tableView:(UITableView *)_tableView numberOfRowsInSection:(NSInteger)section {
    // ...
    if( self.tableView.editing ) 
        return 1 + rowCount;
}

- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // .....
    NSArray* items = ...;
    if( indexPath.row >= [items count] ) {
        cell.textLabel.text = @"add new category";
    }
    // ...

    return cell;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSArray* items = ...;

    if( indexPath.row == [items count] ) …
Run Code Online (Sandbox Code Playgroud)

iphone editing insert objective-c uitableview

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

GHC IO管理器支持哪些IO活动?

我一直在阅读GHC中的新IO管理器,它使用异步事件通知和避免阻塞I/O来实现高吞吐量.

哪些IO活动有资格通过新的异步IO代码进行管理?读写文件和网络活动?数据库访问?是否存在经理不得不诉诸阻止的IO?

haskell ghc

32
推荐指数
2
解决办法
1999
查看次数

我可以在Swift中模拟traits/mixins吗?

斯威夫特是否有一种混合特征的方式,斯卡拉?关于使用扩展来向现有类添加协议的Swift小册子的部分非常接近.但是,由于协议不能包含实现,因此不能将其用于将代码混合到类中.还有另外一种方法吗?

traits mixins swift

26
推荐指数
3
解决办法
5503
查看次数

在Swift中使用选择器是否有类型安全的方法?

在大多数情况下,Swift在类型安全方面是对Objective-C的巨大改进.一个明显的例外是选择器.在Objective-C中,使用表达式@selector(notARealSelector:)会给出编译器警告.Swift等价物Selector("notARealSelector:")将始终编译但在运行时将失败.

是否有一种在Swift中使用选择器的类型安全方法,所以我可以使用需要它们的Objective-C API?

我的NSNotification应用程序中有很多观察者,并希望进行某种编译时检查,我不会在我的选择器中输入拼写错误.

编辑:具体用例是NSNotificationCenter.addObserver.

selector type-safety swift

23
推荐指数
1
解决办法
1067
查看次数

如何在Play 2.0中为每个环境设置不同的数据库?

我希望我的Play应用程序使用不同的数据库进行测试,本地和生产(生产是Heroku)环境.

application.conf我有:

db.default.driver=org.postgresql.Driver 

%dev.db.default.url="jdbc:postgresql://localhost/foobar" 
%test.db.default.url="jdbc:postgresql://localhost/foobar-test" 
%prod.db.default.url=${DATABASE_URL} 
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.当我运行play testplay run所有数据库访问失败时:

 Configuration error [Missing configuration [db.default.url]] (Configuration.scala:258) 
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  • 在一般情况下,我有点困惑的数据库是如何在游戏配置:它看起来像有平原db,db.[DBNAME]db. [DBNAME].url与不同的教程让那些之间不同的选择.某些表达式似乎应该可以正常工作(例如db.default.url = "jdbc:...",在预期对象的位置提供字符串的错误时失败).

  • 我见过其他人认为我创建单独的prod.conf,dev.conftest.conf文件均包括application.conf然后包含特定DB-配置.但在这种情况下,如何指定test从Play控制台运行时要使用的数据库?

  • %env语法是否适用于Play 2?

  • 指定play test要使用的环境的正确方法是什么?

database configuration scala playframework playframework-2.0

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

是否有关于Scala 2.10反射API的教程?

有没有一个好地方可以获得Scala 2.10反射API的全面教程?我看到过去两年里写的很多博客文章,但这些帖子的许多细节已经过时了.

现在2.10是公开的,是否有任何文件可以指导我如何反思?

reflection scala scala-2.10

22
推荐指数
2
解决办法
3786
查看次数

"复制"非案例类?

当我设计不可变对象时,由于自动生成的copy方法,案例类非常方便.

但是案例类有它们自己的问题:它们不应该继承而且即使你不想要它们也会给你一个提取器.

所以有时我必须使用花园种类的Scala类.问题是,我必须编写自己的不可变API,这可能非常重复:

class Debt(principalBalance: Double, name: String, endDate: LocalDate) {
  def withNewPrincipalBalance(bal: Double) = new Debt(bal, name, endDate)
}
Run Code Online (Sandbox Code Playgroud)

是否有更可扩展的方法来做到这一点?我可以使用编译器插件吗?

scala

21
推荐指数
1
解决办法
5680
查看次数