小编Lan*_*nbo的帖子

子引用作为参数

另一个Perl-beginner问题,但奇怪的是,我找不到教程来解释这个简单的问题.

作为练习,我希望编写一个函数map,它接受一个函数和一个数组,返回一个数组.在函数式语言中,经常使用它,我听说了子引用以及如何使用它们.

sub map {
  my $f = shift;
  my @r = ();

  foreach (@_) {
    push(@r, &f($_));
  }
  return @r;
}

sub square {
  my $r = shift;
  return $r*$r;
}

print map(\&shift, 1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,我只得到这个词CODE和一个十六进制数作为输出,五次.然后,我已经改变了呼叫fmap,以$$f($_)$f->($_)而这一切有同样的结果.

我在这做错了什么?

perl

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

设计monadic类型

我需要一些帮助来设计一个monadic数据类型,我似乎无法绕过这个想法,但我肯定知道我想要什么.只有类型检查器似乎需要一些说服力.

我想要的是一些Primitive可以是monad的数据类型.它的功能基本上是绘制图元,我希望能够将它们和组合组合成基元,就像Parser库中的类型一样parsec.但实际绘图必须用IOmonad 完成.

顺便说一句,我也有这样一个类Drawable a:

class Drawable a where
    draw :: (MonadIO m) => Pos -> a -> m ()
Run Code Online (Sandbox Code Playgroud)

我希望每个原始人都可以绘制.感谢任何意见.

monads haskell combinators

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

如何使用IntelliJ/Scala插件关闭自动导入

简单问题:自从我切换到Idea 10.5后,它启用了此自动导入功能.对于Java开发人员来说,这肯定很好,但每次我输入类似的东西var x: Float都会自动添加import java.lang.Float到文件的开头.很多时候,它甚至会添加我甚至不想要的导入,来自我的jar丛林深处的未知包,并且更喜欢Java而不是Scala包.

使用代码完成选项卡中的开关,但它继续这样做.我怎么能摆脱这个?

scala intellij-idea

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

Rails:未初始化的常量PostsController :: TextPost

在我的应用程序中,我可以使用不同类型的帖子.所以我有想法为此包含单表继承:

class Post < ActiveRecord::Base
  has_many :comments
end

class TextPostValidator < ActiveModel::Validator
  def validate(record)
    if record.title.nil? and record.body.nil?
      record.errors[:base] << "Either title or body is necessary"
    end
  end
end

class TextPost < Post
  validates_with TextPostValidator
end

class ImagePost < Post
  validates :image_url, :presence => true
end

class VideoPost < Post
  validates :video_code, :presence => true
  validates :video_service, :presence => true
end

class LinkPost < Post
  validates :link_url, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

当我现在这样做PostsController:

def new_text
  @post = …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails single-table-inheritance ruby-on-rails-3

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

使用Perl的Unicode杂耍

我有一个问题,我认为是微不足道的.我必须处理德语字母表中的变形金刚(äöü).在Unicode中,似乎有几种方法可以显示它们,其中一种方法是组合字符.我需要规范化这些不同的方式,用一个字符的代码替换它们.

很容易找到这样一个离经叛道的变音符号:它是一个字母aou,后面是UTF-8字符\uCC88.所以我认为正则表达式就足够了.

这是我的转换功能,使用Encoding包.

# This sub can be extended to include more conversions
sub convert {
    local $_;
    $_ = shift;

    $_ = encode( "utf-8", $_ );

    s/u\xcc\x88/ü/g;
    s/a\xcc\x88/ä/g;
    s/o\xcc\x88/ö/g;
    s/U\xcc\x88/Ü/g;
    s/A\xcc\x88/Ä/g;
    s/O\xcc\x88/Ö/g;

    return $_;
}
Run Code Online (Sandbox Code Playgroud)

但是由此产生的印刷变音符号是一些更狡猾的字符(现在占用4个字节),而不是此列表中的那个.

我想问题是这个与Perl的内部格式,实际的UTF-8和这种编码格式相关.

甚至将替换线更改为

s/u\xcc\x88/\xc3\xbc/g;
s/a\xcc\x88/\xc3\xa4/g;
s/o\xcc\x88/\xc3\xb6/g;
s/U\xcc\x88/\xc3\x9c/g;
s/A\xcc\x88/\xc3\x84/g;
s/O\xcc\x88/\xc3\x96/g;
Run Code Online (Sandbox Code Playgroud)

没有帮助,他们正确转换,但后面跟着字母"\ xC2\xA4".

有帮助吗?

perl utf-8 utf8-decode

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

分析器跳过线

我想为Jade的一个子集编写一个简单的解析器,生成一些XmlHtml以供进一步处理.

解析器非常简单,但与Parsec一样,有点长.由于我不知道我是否被允许发布这么长的代码,我在这里有完整的工作示例.

我以前曾经和Parsec打过仗,但很少成功.现在,我不太明白为什么它似乎吞下了几行.例如,玉的输入

.foo.bar
    | Foo
    | Bar
    | Baz
Run Code Online (Sandbox Code Playgroud)

测试过parseTest tag txt,返回此:

Element {elementTag = "div", elementAttrs = [("class","foo bar")], elementChildren = [TextNode "Foo"]}
Run Code Online (Sandbox Code Playgroud)

我的解析器似乎能够处理任何类型的嵌套,但永远不会超过一行.我错过了什么?

haskell parsec pug

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

Recyclerview作为Snappy Gallery

我一直试图自己解决这个问题,但没有机会.

我需要的是RecyclerView(水平滚动)总是显示3项.每当用户左右摇晃或滚动时,如果还有更多,它应该会捕捉到接下来的3个项目.如果有的话,我只是在寻找最简单的解决方案.

我找到了包含单个项目的Gallery解决方案,但我需要3个项目.我知道它一定是可能的,但我无法弄清楚如何.例如,LayoutManager应该计算项目宽度以使其与设备的宽度相匹配.而且我想我需要以RecyclerView.OnScrollListener某种方式使用.

有人可以帮帮我吗?

android android-recyclerview recyclerview-layout

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

复杂的Parsec解析器

我不知道怎么回答.我想我需要一般指导.我有这样的事情:

expr = buildExpressionParser table term
    <?> "expression"

term = choice [
    (float >>= return . EDouble)
    , try (natural >>= return . EInteger)
    , try (stringLiteral >>= return . EString)
    , try (reserved "true" >> return (EBool True))
    , try (reserved "false" >> return (EBool False))
    , try assign
    , try ifelse
    , try lambda
    , try array
    , try eseq
    , parens expr
    ]
    <?> "simple expression"
Run Code Online (Sandbox Code Playgroud)

但是,当我测试该解析器时,我主要遇到问题...就像我尝试解析时一样

 (a,b) -> "b"
Run Code Online (Sandbox Code Playgroud)

它被lambda解析器接受,但expr解析器讨厌它.有时它甚至完全挂在永恒的规则中.

我已经阅读了自己写一个方案 …

haskell parsec

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

express.js中的第二个路由器或中间件路径

我有我的应用程序通常的中间件堆栈:

  app.configure(function() {
    app.use(express.static(PUBLIC_DIR));
    app.use(express.favicon());
    app.use(express.bodyParser({
      keepExtensions: true,
      uploadDir: '/tmp/neighr'
    }));
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({
      secret: '***REDACTED***',
      store: sessionStore,
    }));
    app.use(express.csrf());
    app.use((require('connect-flash'))());
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(function(req, res, next) {
      app.locals({
        _csrf: req.session._csrf,
        url: req.url,
        user: req.user,
        authenticated: req.isAuthenticated(),
        messages: {
          info: req.flash('info'),
          error: req.flash('error'),
          success: req.flash('success')
        }
      });
      next();
    });
    app.use(app.router);
    app.use(express.logger());
    app.use(express.errorHandler());
  });
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它express.static是堆栈中的第一个,因此静态资源将在不经过整个会话的情况下提供,这只会使加载时间更长.

但是,我确实有一些动态数据,我希望在没有所有会话内容的情况下提供服务:

app.get('/avatar/:id', function(req, res) {
  var fid = res.params.id;
  /* load binary from database */
  res.send(data);
});
Run Code Online (Sandbox Code Playgroud)

此路由位于app.router堆栈末尾.我想保留声明这个和其他路由的方法,但是如何在会话中间件之前使用express来解析这些?

未来可能会有更多这样的动态路线,参数更多.

node.js express

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

对象初始化时出现NullPointerException

我正在使用Scala Liftweb并拥有此模型对象:

object Product extends Product with LongKeyedMetaMapper[Product] {
  override def dbTableName = "products"

  override def dbIndexes = UniqueIndex(slug) :: super.dbIndexes

  def menus = sitemap

  lazy val sitemap: List[Menu] = List(editProductMenuLoc, listProductsMenuLoc, createProductMenuLoc, indexProductsMenuLoc).flatten(a => a)

  protected def editProductMenuLoc =
    Full(Menu(Loc("EditProduct" + menuNameSuffix, editPath, S.?("edit.product"))))

  protected def listProductsMenuLoc = Full(Menu(Loc("ListProduct" + menuNameSuffix, listPath, S.?("list.products"))))

  protected def indexProductsMenuLoc = Full(Menu(Loc("ListProduct" + menuNameSuffix, indexPath, S.?("index.products"))))

  protected def createProductMenuLoc =
    Full(Menu(Loc("CreateProduct" + menuNameSuffix, createPath, S.?("create.product"))))

  protected val menuNameSuffix = ""

  protected val editSuffix …
Run Code Online (Sandbox Code Playgroud)

scala lift

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