标签: simplify

所有选择F#中的列表 - 更优雅和简单

有人可以提出更好和/或更优雅的实现:

let each xs = 
    let rec each' acc left right = 
        match right with
        | [] -> acc
        | right ->  let new_left  = left @ [List.hd right]
                    let next   = List.tl right
                    let result = (List.hd right), left @ next
                    each' (result::acc) new_left next
    each' [] [] xs

它做到了:

> each [1..3];;
val it : (int * int list) list = [(3, [1; 2]); (2, [1; 3]); (1, [2; 3])]

此函数也可以反向返回结果.我们的想法是将所有元素作为元组,包含元素和rest元素列表.

f# functional-programming list simplify

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

改进Python回文代码

所以我最近实现了一个代码来检查一个单词,看它是不是回文.

def isPalindrome():
    string = input('Enter a string: ')
    string1 = string[::-1]
    if string[0] == string[(len(string)-1)] and string[1:(len(string)-2)] == string1[1:(len(string)-2)]:
            print('It is a palindrome')
    else:
        print('It is not a palindrome')
isPalindrome()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以给我提示简化代码.

编辑 - 如果我要使用语句使函数成为迭代函数string == string1,我将如何停止无限循环?我需要一个计数来停止while循环吗?

python palindrome simplify

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

多个JavaScript按钮简化为一个功能

我有三个按钮和三个JS功能,可以切换三个不同div的显示.如何将我的三个JS函数简化/压缩成一个将每个按钮连接到相应内容的函数?

例:

HTML按钮

<button onclick="myFunction1()">Button 1</button>
<button onclick="myFunction2()">Button 2</button>
<button onclick="myFunction3()">Button 3</button>
Run Code Online (Sandbox Code Playgroud)

HTML内容

<div id="ContentOne">This is Content One.</div>
<div id="ContentTwo">This is Content Two.</div>
<div id="ContentThree">This is Content Three.</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

function myFunction1() {
    var x = document.getElementById("ContentOne");
    if (x.style.display === "none") {
        x.style.display = "block";
    } else {
        x.style.display = "none";
    }
}

function myFunction2() {
    var x = document.getElementById("ContentTwo");
    if (x.style.display === "none") {
        x.style.display = "block";
    } else {
        x.style.display = "none";
    }
}

function myFunction3() {
    var x …
Run Code Online (Sandbox Code Playgroud)

html javascript button simplify

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

如何最好地从模板混乱切换到干净的类架构(C++)?

假设一个较大的模板库包含大约100个文件,其中包含大约100个模板,总共超过200,000行代码.一些模板使用多重继承来使库本身的使用相当简单(即从一些基本模板继承并且只需要实现某些业务规则).

所有存在的(长达数年),"工作"并用于项目.

但是,使用该库编译项目会占用越来越多的时间,并且需要花费相当长的时间来查找某些错误的源代码.修复通常会导致意外的副作用或非常困难,因为某些相互依赖的模板需要更改.由于功能的庞大,测试几乎是不可能的.

现在,我真的想简化架构以使用更少的模板和更专业的小类.

是否有任何可靠的方法来完成这项任务?什么是一个好的开始?

c++ templates simplify

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

jQuery代码简化

我有这个代码,但它有点重复,有没有办法让它更短?

 jQuery(document).ready(function() {
    var allTabs = jQuery('#front, #blog, #portfolio, #pages, #colors, #fonts');
    allTabs.hide();

    jQuery('#front-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#front').show();
    });

    jQuery('#blog-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#blog').show();
    });

    jQuery('#portfolio-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#portfolio').show();
    });

    jQuery('#pages-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#pages').show();
    });

    jQuery('#colors-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#colors').show();
    });

    jQuery('#fonts-show').click(function() {
        event.preventDefault();
        allTabs.hide();
        jQuery('#fonts').show();
    });
});
Run Code Online (Sandbox Code Playgroud)

jquery simplify

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

试图在perl的oneline中编写foreach并失败

新的perl,尝试使用它的语法,然后我收到此错误消息

$ perl testP
syntax error at testP line 3, near "$_ ("
Execution of testP aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

对于:

$_=$_+1 foreach $_ (@_);
Run Code Online (Sandbox Code Playgroud)

谁能告诉我出了什么问题以及如何解决?谢谢.

syntax perl foreach for-loop simplify

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

简化陈述

我正在研究一个项目,我正在使用Intellij IDEA.在我写作的时候,我收到了一条通知,说明我的if语句可以简化了.(注意我还是新编码)

它说:

报告if语句可以简化为单个赋值还是返回语句.例如:

if (foo()) {
   return true;
} else {
   return false;
}
Run Code Online (Sandbox Code Playgroud)

可以简化为

return foo();
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?假设foo()是数字4,这不会只返回4而不是真的吗?我有什么误会?

编辑

这是我写的代码:

if (row > 0 && row < 4 && col > 0 && col < 4) {
    return false;
} else {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

它可以简化为:

return !(row > 0 && row < 4 && col > 0 && col < 4);
Run Code Online (Sandbox Code Playgroud)

我只是不明白这是如何简化的.

java intellij-idea simplify

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

简化数据框中数据的方法

我有一组处理蛋白质序列的15个数据框,我的目标是分析蛋白质随时间的变化.但是,我的数据框架有大约5000个基因.所以我正在寻找一种简化数据的方法,以便于分析.

下面是一个示例数据框.

> sample
  p1 p2 p3 year
1  a  d  d 1970
2  a  c  e 1970
3  b  d  e 1970
4  b  c  d 1985
5  b  c  d 1985
6  b  c  d 1999
Run Code Online (Sandbox Code Playgroud)

我想要做的是每年分析每个位置(p1 p2p3)并返回该年度该位置最常见的条目,从而创建一个每年只有一个序列的新数据框.结果数据框应如下所示:

> result
  p1 p2 p3 year
1  a  d  e 1970
2  b  c  d 1985
3  b  c  d 1999
Run Code Online (Sandbox Code Playgroud)

数据框已按日期排序,但我不知道每年有多少条目.那么,有没有办法用这种方法简化我的数据?

row r simplify dataframe

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

C++语句可以简化

为蹩脚的问题道歉.我正在使用Intellij Clion Student许可版本用于我的C++课程.作为实现UnsortedList类的一部分,我们必须编写一个方法isInTheList来查看数组中是否存在元素.类实现如下

bool UnsortedList::isInTheList(float item) {

    for (int i = 0; i < length; i++) {
        if (data[i] == item) {
            return true;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,ide data[i] == item用弹出的说法显示了一个彩色标记

Statement can be simplified less... (Ctrl+F1) 
This inspection finds the part of the code that can be simplified, e.g. constant conditions, identical if branches, pointless boolean expressions, etc.
Run Code Online (Sandbox Code Playgroud)

对于先前检查列表是否为空的方法,我使用以下简化形式而不是if-else语句.

bool UnsortedList::isEmpty() {
    return (length == 0);
}
Run Code Online (Sandbox Code Playgroud)

但是,现在涉及迭代,我无法在前者中提出简化的陈述.任何帮助深表感谢.谢谢.

c++ if-statement intellij-idea simplify

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

德尔福/拉撒路| 有没有一种方法可以简化全局OnMouseEnter事件处理?

问题

我想在Windows上的Delphi XE6中简化以下代码,因为我添加了越来越多类型的组件,所以该代码变得难以维护。

可移植性说明:我想稍后在Linux上的Lazarus 2.0.2中使用相同的代码,几乎没有更改,因此Windows消息处理已成为不可能。

问题是,我似乎找不到一种将OnMouseEnter事件处理程序分配给整个Form上所有组件的方法。

我尽了一切努力,包括对象树中常见的各种类。OnMouseEnter事件似乎没有什么共同点。

事件处理程序本身仅包含一个命令(procedure = void function),并且将不再包含该命令,也许这可以简化整个问题?

正如您在下面看到的那样,此刻我需要将每种类型的组件(当前仅TLabel,TButton和TEdit)添加到for循环中。


procedure TFormMain.FormCreate(Sender: TObject);
var
    I: Integer;
begin
    for I := 0 to FormMain.ComponentCount - 1 do
    begin
        if FormMain.Components[I] is TLabel then
        begin
            (FormMain.Components[I] as TLabel).OnMouseEnter
                := @CustomGenericMouseEnter;
        end;
        if FormMain.Components[I] is TButton then
        begin
            (FormMain.Components[I] as TButton).OnMouseEnter
                := @CustomGenericMouseEnter;
        end;
        if FormMain.Components[I] is TEdit then
        begin
            (FormMain.Components[I] as TEdit).OnMouseEnter
                := @CustomGenericMouseEnter;
        end;
    end;
end;

procedure TFormMain.CustomGenericMouseEnter(Sender: TObject);
begin
    SingleCustomProcedure; // …
Run Code Online (Sandbox Code Playgroud)

delphi portability event-handling simplify lazarus

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