小编pin*_*ker的帖子

Python装饰器 - 类中的__call__

我试图理解Python装饰器,我试图写一个等效的程序到这个:

class myDecorator(object):
   def __init__(self, f):
      print ("inside myDecorator.__init__()")
      f() # Prove that function definition has completed

   def __call__(self):
      print ("inside myDecorator.__call__()")

@myDecorator
def aFunction():
   print ("inside aFunction()")

print ("Finished decorating aFunction()")

aFunction()
Run Code Online (Sandbox Code Playgroud)

问题是我不了解如何__call__通过aFunction()最后调用来调用类的方法.

正在aFunction()被取代myDecorator.__call__(aFunction).你能帮我么?没有装饰器的等效程序怎么样?

谢谢!

python python-decorators

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

Intellij源代码中的这个注释是什么意思?

在github中查看IntelliJ IDEA Community Edition项目的源代码时,在其中一个文件中我找到了以下符号:

void m() {
    <selection><caret>System.out.println("");</selection>
}
Run Code Online (Sandbox Code Playgroud)

这个<selection>注释是什么意思?它正在处理哪个工具?

afterEnumConstantWithArgs.java的完整源代码如下.

// "Use existing implementation of 'm'" "true"
enum I {
    A("a") {
        void m() {
            <selection><caret>System.out.println("");</selection>
        }
    },
    B("b") {
        public void m() {
            System.out.println("");
        }
    };
    abstract void m();
    I(String s){}
}
Run Code Online (Sandbox Code Playgroud)

java intellij-idea

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

十六进制数C#

我试图在C#中读取二进制文件,但我遇到了问题.我宣布了以下内容:

public static readonly UInt32 NUMBER = 0XCAFEBABE;
Run Code Online (Sandbox Code Playgroud)

然后在从文件的最开头读取时我要求读取前4个字节(已尝试过不同的方法,但这是最简单的):

UInt32 num = in_.ReadUInt32(); // in_ is a BinaryReader
Run Code Online (Sandbox Code Playgroud)

虽然我有4个字节是CA,FE,BA和BE(十六进制),同时将它们转换为UInt我得到不同的值.NUMBER是3405691582,num是3199925962.我也试过这样做:

byte[] f2 = {0xCA, 0xFE, 0xBA, 0xBE};
Run Code Online (Sandbox Code Playgroud)

这样做的结果BitConverter.ToUInt32(new byte[]{0xCA, 0xFE, 0xBA, 0xBE},0)是3199925962.

谁能帮我?

谢谢

c# hex

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

AnTLR4:INDENT和DEDENT令牌

我在AnTLR4中实现了Python语法,但我遇到了与此处讨论的INDENT和DEDENT相同的问题:ANTLR4-动态注入令牌

我正在尝试的解决方案是转换Ter的解决方案,可以在这里找到http://antlr3.org/grammar/1078018002577/python.tar.gz(覆盖nextToken并插入虚构的令牌).

问题是这个解决方案假设我们有一个词法分析器规则,如:

LEADING_WS
    :   {getColumn()==1}?
        // match spaces or tabs, tracking indentation count
        (   ' '  { spaces++; }
        |   '\t' { spaces += 8; spaces -= (spaces % 8); }
        |   '\014' // formfeed is ok
        )+
        {
        }
        ...
Run Code Online (Sandbox Code Playgroud)

但是我一直都会收到错误,因为词法分析器中的操作必须是单个altermost替代方案的最后一个元素.

任何人都可以帮我找到解决方案吗?

非常感谢!!!

python grammar lexer antlr4

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

Ruby 中的双方括号

给出以下代码:

def map(char, charmap)
    unless map = charmap[[char]]
     unless map = charmap[[char, c = input.getc]]
       input.ungetc(c) if c
       map = ''
     end
    end
  map
end
Run Code Online (Sandbox Code Playgroud)

双方括号是做什么的?

谢谢

ruby arrays square-bracket

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

OBJC_EXTERN:目的是什么?

您正在查看一些Objective-C代码,并发现以下声明:

OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);

这意味着什么?那么,这个陈述的语法应该是什么?

提前致谢

objective-c extern

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

AnTLR4优先级奇怪的行为

我有一个非常简单的测试语法如下:

grammar Test;

statement: expression EOF;

expression
    :   Identifier
        |   expression binary_op expression
        |   expression assignment_operator expression
        |   expression '.' Identifier 
    ;

binary_op: '+';
assignment_operator : '='  ;

Identifier : [a-zA-Z]+ ;
WS : [ \n\r\t]+ -> channel(HIDDEN) ;
Run Code Online (Sandbox Code Playgroud)

使用此版本的语法,如果我编写以下代码,我会得到预期的行为:

b.x + b.y 
Run Code Online (Sandbox Code Playgroud)

我得到了一棵树 (+ (. b x) (. b y))

但是,如果我替换expression binary_op expressionexpression '+' expression我得到一个非常不同的树:(. (+ (. b x) b) y)

这有什么解释吗?

谢谢

grammar antlr antlr4

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

Go:是否可以返回指向函数的指针

对于以下代码:

package main

import "fmt"

type intFunc func(int) int

var t = func() intFunc {
        a := func(b int) int { return b}
        return a
    }

func main() {
    fmt.Println(t()(2))
   }
Run Code Online (Sandbox Code Playgroud)

有没有办法返回指向函数的指针而不是直接返回函数?(就像是return &a)?

游乐场在这里: https: //play.golang.org/p/IobCtRjVVX

pointers go

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

方法调用的参数中的冒号 - Ruby

在查看一些Ruby代码时,我发现了以下方法:

def connection
    unless @_mc_connection && valid? && @_ns_version == get_version
      @_mc_connection = ::Dalli::Client.new(self.dalli_servers, self.dalli_options.merge(namespace: namespace))
    end
    @_mc_connection
  end
Run Code Online (Sandbox Code Playgroud)

我的问题是关于使用dalli_options.merge(namespace: namespace).结肠的目的是什么?哈希成员?

ruby methods arguments

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

AnTLR4 C#中的解析树

我目前正在使用针对 C# 的 AnTLR4 创建语法,但在开发访问者时遇到问题。我找不到书中提到的 ParseTree 类。

在书中我们有:

LabeledExprLexer lexer = new LabeledExprLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
LabeledExprParser parser = new LabeledExprParser(tokens);
ParseTree tree = parser.prog(); // parse
but I can't see the equivalent C# code.
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗?

c# parse-tree antlr4

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