标签: parentheses

对Scala方法调用约定感到困惑,特别是Seq上的sum函数

我正在使用新的Scala IDE(Eclipse 3.6.2 + Scala IDE 2.0.0 [Scala 2.9.0]),我尝试做一些像这样简单的事情:

(1 to 10).sum
Run Code Online (Sandbox Code Playgroud)

这很好,但我最近也做了很多Groovy,我自动写道:

(1 to 10).sum()
Run Code Online (Sandbox Code Playgroud)

第二个版本在IDE中给出了编译器错误,并显示以下消息:

方法总和的参数不够:(隐式数:数字[B])B.未指定的值参数num.

我在Scala API上看到有两个版本的sum,一个不带参数,另一个带上面隐含的.我是否必须在没有括号的情况下调用零参数方法?

scala implicit parentheses

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

为什么在SQL查询中添加括号会导致结果发生变化?

当我执行以下查询时,即使有11条匹配的记录,也没有按照写入的方式返回.但是,如果我删除第6行和第9行的括号,则按预期返回所有11条记录.

1  select obj_id, obj_title, UI_DISPLAYNAME
2  from PITS_OBJECT 
3  LEFT OUTER JOIN ui_displayname_view ON obj_create_ui_id = UI_ID  
4  where
5  /* w/ parens, no results, w/o parens, expected results */
6  (
7     Upper( UI_DISPLAYNAME ) LIKE Upper( '%smith%' )  
8     OR Upper( OBJ_TITLE ) LIKE Upper( '%smith%' ) 
9  )
10 /* end w/ parents, no results.... */
11 AND OBJ_ID IN (select obj_id from PITS_OBJECT where 
12     (UPPER( OBJ_TITLE ) LIKE UPPER( '%smith%' )) 
13     AND obj_id …
Run Code Online (Sandbox Code Playgroud)

sql parentheses

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

在Perl中使用无括号子程序调用的原因是什么?

根据perldoc perlsub:

在现代Perl中,&是可选的,如果子例程已经预先声明,则是括号.

我注意到很多时候,人们使用的事实是,在调用Perl子例程时可以省略括号(例如,从最近的SO答案中随机引用):

open my $fin, '<', $file;
Run Code Online (Sandbox Code Playgroud)

同样有效

open(my $fin, '<', $file);
Run Code Online (Sandbox Code Playgroud)

使用第二个(无括号)版本的主要(理想情况下,技术上)原因是什么?

除了再次提及选择性之外,perldoc perlsyn没有就该主题发表任何言论.

对我来说,由于我作为C开发人员的起源,总是使用括号主要是一种风格选择; 但我想知道我是否遗漏了不使用可选的无括号语法作为Perl开发人员的问题.


PS我完全清楚偏好带括号的版本的原因 - 例如间接对象​​表示法的问题,或者在没有括号的情况下使用非内置函数的要求,或者优先使用visavi orvs的问题||.我对相反的兴趣.


PPS我对答案并不是很感兴趣,只是在没有任何研究支持意见的情况下说明"它的风格更好"/"更具可读性".我对技术原因感兴趣,不喜欢括号遗漏,或支持风格差异偏好(请不要混淆"备份"与"诉诸权威"或"论证广告"谬误.研究显示速度提高或对代码的理解就是证据."Perl社区中的每个人都同意"或"Damien Conway建议这一点"而不解释Damien如何支持这一点并不是这样.

perl coding-style call parentheses subroutine

15
推荐指数
3
解决办法
4852
查看次数

在python中解析嵌套括号,按级别获取内容

显然,这个问题在阅读之后会经常出现

正则表达式检测用于&while循环的半冒号终止C++

并且思考了一会儿的问题,我写了一个函数来返回包含在任意数量的嵌套()内的内容

该函数可以很容易地扩展到任何正则表达式对象,在此发布您的想法和注意事项.

任何重构建议将不胜感激

(注意,我仍然是python的新手,并且不想弄清楚如何引发异常或其他什么,所以我只是让函数返回'失败',如果它不能弄清楚发生了什么)

编辑功能以考虑评论:

def ParseNestedParen(string, level):
    """
    Return string contained in nested (), indexing i = level
    """
    CountLeft = len(re.findall("\(", string))
    CountRight = len(re.findall("\)", string))
    if CountLeft == CountRight:
        LeftRightIndex = [x for x in zip(
        [Left.start()+1 for Left in re.finditer('\(', string)], 
        reversed([Right.start() for Right in re.finditer('\)', string)]))]

    elif CountLeft > CountRight:
        return ParseNestedParen(string + ')', level)

    elif CountLeft < CountRight:
        return ParseNestedParen('(' + string, level)

    return string[LeftRightIndex[level][0]:LeftRightIndex[level][1]]
Run Code Online (Sandbox Code Playgroud)

python parsing parentheses

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

java转义括号

我有这个小类来对字符串进行多次替换:

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
public class MultipleReplace {
    public static void main(String[] args) {
        Map<String,String> tokens = new HashMap<String,String>();
        tokens.put(":asd:", "<img src=asd.gif>");
        tokens.put(":)", "<img src=sorriso.gif>");
        String template = ":asd: bravo! :)";
        String patternString = "(" + StringUtils.join(tokens.keySet(), "|") + ")";
        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(template);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()) {
            matcher.appendReplacement(sb, tokens.get(matcher.group(1)));
        }
        matcher.appendTail(sb);

        System.out.println(sb.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是在第二次替换,我有一个括号导致:

线程"main"中的异常java.util.regex.PatternSyntaxException:索引8(:)|:asd :)附近的不匹配的结束')'

我怎么能逃脱括号?或者,你能建议一个替代方案来做多次替换吗?

非常感谢,对不起我的英语:)

编辑:

使用反斜杠转义')'也不起作用,它不会编译:

"无效的转义序列(有效转义序列为\ b\t \n\f\r \"\'\)" …

java regex escaping parentheses

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

Python生成器表达式括号奇怪

我想确定列表是否包含某个字符串,所以我使用生成器表达式,如下所示:

g = (s for s in myList if s == myString)
any(g)
Run Code Online (Sandbox Code Playgroud)

当然我想内联这个,所以我这样做:

any((s for s in myList if s == myString))
Run Code Online (Sandbox Code Playgroud)

然后我认为单个parens会更好看,所以我尝试:

any(s for s in myList if s == myString)
Run Code Online (Sandbox Code Playgroud)

并不是真的期待它的运作.惊喜!它呢!

那么这个合法的Python还是我的实现允许的东西?如果它是合法的,这里的一般规则是什么?

python generator-expression parentheses

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

当它们在LaTeX数学中的行之间分割时,如何使括号匹配高度?

请考虑以下示例

\begin{equation}
    \begin{split}
        f = & \left( \frac{a}{b} + \right. \\
                   & \left. c \right) + d 
    \end{split}
\end{equation}
Run Code Online (Sandbox Code Playgroud)

在结果中,第一行的左括号非常大,因为里面的分数.在第二行中,由于没有分数,因此括号很小.

如何使第二行的那个匹配第一行的高度?

latex split tex parentheses

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

C宏和括号中的参数使用

#define Echo(a)  a
#define Echo(a) (a)
Run Code Online (Sandbox Code Playgroud)

我意识到这里可能没有显着差异,但为什么你想要a在宏体内包括括号内?它是如何改变它的?

c macros parentheses c-preprocessor

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

添加和连接时PHP很困惑

我有以下代码:

<?php

    $a = 1;
    $b = 2;

    echo "sum: " .  $a + $b;
    echo "sum: " . ($a + $b);

?>
Run Code Online (Sandbox Code Playgroud)

当我执行我的代码时,我得到:

2
sum: 3
Run Code Online (Sandbox Code Playgroud)

为什么它无法"sum:"在第一个回声中打印字符串?将附加括在括号中似乎没问题.

这种奇怪的行为是否记录在案?

php sum concatenation parentheses

13
推荐指数
2
解决办法
2828
查看次数

用于'自动关闭'括号的Vim插件?

我已经搜索了近,远没有找到一个可以简单地自动关闭像Textmate这样的一组括号的插件.例如:

Vim     : (*manually close parens* ? )
Textmate: (*Auto closes parens*)
Run Code Online (Sandbox Code Playgroud)

如果你能为此描述一个插件,我会非常乐于助人.谢谢!

vim plugins parentheses option

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