在Scala中使用regexp时我写了这样的东西:
scala> val y = "Foo"
y: java.lang.String = Foo
scala> y "Bar"
scala>
Run Code Online (Sandbox Code Playgroud)
如您所见,第二个语句只是默默接受.这是合法的法律声明,如果是,它会做什么?或者它是解析器中的错误,应该有错误消息?
我发现很难快速创建UML.
我想更快地提出我的想法,特别是对于小型开源项目.
如果它足够大我会打扰UML,但项目对于这种事情来说太小了.
我不想要另一个让我想到的工具"我会在以后再做".
有什么建议?
我有一些小算法,我想在一篇论文中写出来.它们相对简短,简洁.然而,我不想用伪代码(àlaCormen甚至Knuth)编写它们,而是想写出它们的代数表示(更线性和更好的LaTeX渲染).但是,如果有什么东西,我无法找到关于此的最佳表示法的资源:例如,我如何表示循环?如果?在列表中添加元组?
有没有人遇到过这个问题,并以某种方式解决了它?
谢谢.
编辑:谢谢,人们.我认为我在表达这个问题方面表现不佳.这里又说了一遍,希望我说得更清楚:在数学符号中讨论循环和if-then子句的常用符号是什么?例如,我可以$acc \leftarrow acc \cup \langle i,i+1 \rangle$用来表示列表的"添加"方法.
JSON网站使用非常清晰的表示法来描述JSON的语法:
http://www.json.org/object.gif http://www.json.org/object.gif
这种符号的名称是什么?这只是BNF的图形表示还是它有自己的名字?
对于文件名中的非ASCII字符,Git将以八进制表示法输出它们.例如:
> git ls-files
"\337.txt"
Run Code Online (Sandbox Code Playgroud)
如果这样的字节序列不表示合法编码(对于命令行的当前编码),我无法在命令行上输入相应的字符串.我怎样才能在这些文件上调用Git命令?显然,使用显示的字符串git ls-files不起作用:
> git rm "\337.txt"
fatal: pathspec '337.txt' did not match any files
Run Code Online (Sandbox Code Playgroud)
在Windows上测试,使用msysgit 1.7.10(git版本1.7.10.msysgit.1)
我偶然发现了http://sourceware.org/ml/glibc-cvs/2013-q1/msg00115.html,其中包括该行
#define TWO5 0x1.0p5 /* 2^5 */
Run Code Online (Sandbox Code Playgroud)
显然,TWO5被定义为带有显式值的double 1<<5.但是,这是我第一次看到这种表示法.这种格式是如何使用的,与写作相比有什么优势2.5?
使用反向DNS包符号的技术原因是什么?或者只是一个惯例?
我对定义/调用Lua函数时使用的冒号表示法感到非常困惑.
在我看到这段代码之前,我以为我已经知道了.
function string.PatternSafe( str )
return ( str:gsub( ".", pattern_escape_replacements ) );
end
function string.Trim( s, char )
if char then char = char:PatternSafe() else char = "%s" end
return string.match( s, "^" .. char .. "*(.-)" .. char .. "*$" ) or s
end
Run Code Online (Sandbox Code Playgroud)
令我困惑的是string.PatternSafe()在任何地方都没有引用'self',但代码似乎有效.
我还看到了一些在定义函数时使用冒号表示法的脚本,例如:
function foo:bar( param1 ) ... end
Run Code Online (Sandbox Code Playgroud)
经过几个小时的谷歌搜索后,我仍然无法弄清楚在这两种情况下究竟发生了什么.我目前的假设如下:
如果我的假设是正确的,那就提出了另一个问题:确保正确调用函数的最佳方法是什么?
O(n)根据我们的教授,下面的算法有运行时间,但是我很困惑为什么它不是
O(n log(n)),因为外部循环可以运行log(n)多次,内部循环可以运行多达n几次.
Algoritme Loop5(n)
i = 1
while i ? n
j = 1
while j ? i
j = j + 1
i = i?2
Run Code Online (Sandbox Code Playgroud) 我试着理解Big O Notation最坏情况运行时.但我还是不太明白.
这是我最近写的一些代码:
def g(n):
if n==0:
return 1
elif n==1:
return 2
else:
n_div=n//2
n_mod=n%2
return g(n_div)*g(n_mod)
Run Code Online (Sandbox Code Playgroud)
所以我希望我至少是对的:
def g(n):
if n==0:
return 1
Run Code Online (Sandbox Code Playgroud)
和:
elif n==1:
return 2
Run Code Online (Sandbox Code Playgroud)
是O(1),所以不变.
但那个else部分呢.
是O(n)因为它取决于n我选择的吗?
任何人都可以解释该部件的Big O复杂性else是什么?