小编iva*_*van的帖子

Vim:什么是默认的退格行为?

我正在设置我的vimrc文件.我理解添加set backspace=indent,eol,start允许退格键在插入模式下"正常"(删除缩进,换行符,预先存在的字符),但是我很困惑我是否需要将此行添加到我的文件中,或者它是否是默认行为.

即使没有vimrc文件,我也尝试在没有该行的情况下运行Vim,并且退格仍然正常工作.我应该提一下,我在MacBook上,键实际上标记为"删除",但我认为这是无关紧要的.

vim

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

从该实例的__init__方法中调用实例方法是不好的形式?

我正在构建一个具有属性的对象,该属性的值在实例化时随机生成.该属性将不时被赋予一个新值(也是随机的),所以我正在定义一个方法来执行此操作.通过从内部调用该方法初始化属性是不好的形式__init__?这很容易避免 - 我只需复制少量代码 - 但调用该方法似乎更优雅.这是一个例子:

import random

class Robot(object):
    def __init__(self):
        self.setDirection()

    def setDirection(self):
        self.direction = random.random() * 360
Run Code Online (Sandbox Code Playgroud)

python methods initialization

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

Git:HEAD vs head

我能找到的所有文档都指向HEAD并且我多次听说它区分大小写.我能做的事情,比如,

git log head...merge_head
Run Code Online (Sandbox Code Playgroud)

它的工作原理就像

git log HEAD...MERGE_HEAD
Run Code Online (Sandbox Code Playgroud)

这是由于我在本地设置中的一些自定义,我不知道,或者它只是一个没有记录的功能(可能是为了阻止这种做法)?

git

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

Git:将一个大的+杂乱的功能分支分成更小的分支

我有一个成长和成长的特征分支,随着特征的发展,有许多曲折.我想把一些单独可释放的块分解成它们自己的分支.

提交不够干净,不能通过提交选择来构建这样的分支(即一些提交触摸多个文件,其中只有一些我想选择).我是一个灵巧的交互式变形,大块编辑等等,但我想知道是否有更好的方法来做到这一点?

我最初的想法是创建一个分支,它是原始功能分支的副本,将它的所有提交压缩为1,重置为上一次提交(在我的工作树中保留完整的未提交的,未分级的功能分支),然后有选择地添加和提交我想要的碎片.

$ git co -b partial-feature
$ git rebase -i HEAD~170
Run Code Online (Sandbox Code Playgroud)

在编辑器中:

pick 234e78fa Begin writing feature
f 7844c437 Add more stuff
f 3523437 And even more
...
Run Code Online (Sandbox Code Playgroud)

然后,

$ git reset HEAD~
$ git add first_good_change.rb
$ git commit -m 'Add a good change'
$ git add second_good_change.rb
$ git commit -m 'Add another good change'
...
Run Code Online (Sandbox Code Playgroud)

有更聪明的方法吗?

git

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

Haskell:可以递归调用main吗?

我已经看到了很多示例,这些示例main调用递归调用自身的帮助函数,例如

main = loop
  where
    loop = do
      putStrLn "I'm in a loop"
      loop
Run Code Online (Sandbox Code Playgroud)

我从未见过main递归调用自身的情况,例如

main = do
  putStrLn "I'm in a loop"
  main
Run Code Online (Sandbox Code Playgroud)

不过,它似乎运行良好,这让我想知道为什么我从未见过它。是否被认为是非习惯用语?它会改变编译后的程序吗?

recursion haskell

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

使用 QuickCheck 生成单射函数?

我正在使用 QuickCheck 生成任意函数,并且我想生成任意单函数(即f a == f b当且仅当a == b)。

以为我已经弄清楚了:

newtype Injective = Injective (Fun Word Char) deriving Show

instance Arbitrary Injective where
  arbitrary = fmap Injective fun
    where
      fun :: Gen (Fun Word Char)
      fun = do
        a <- arbitrary
        b <- arbitrary
        arbitrary `suchThat` \(Fn f) ->
          (f a /= f b) || (a == b)
Run Code Online (Sandbox Code Playgroud)

但是我看到生成的函数将不同的输入映射到相同的输出的情况。

我想要的是:

  • f使得对于所有输入ab,要么fa不等于fb要么 …

testing haskell functional-programming quickcheck

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

Rails:如何将空的“必需”属性添加到radio_button_tag

我正在尝试使用radio_button_tag来生成单选按钮标记,例如:

<input type="radio" ... required>
Run Code Online (Sandbox Code Playgroud)

为了添加表单验证(我正在使用Foundation并尝试使用Abide库)。我能得到的最接近的是:

radio_button_tag 'my_radio', ... , required: ''

# => <input type="radio" ... required="required">
Run Code Online (Sandbox Code Playgroud)

这对于Abide来说似乎已经足够好了,但是有没有办法让我从Rails助手中得到想要的东西?我试过required: true了,required: ''但是它的表现是一样的。

html validation ruby-on-rails

5
推荐指数
2
解决办法
2918
查看次数

为什么这个scanf格式字符串不起作用?"%[^ \n]的\n" 个

我已经看到一些例子,人们给scanf一个"%[^\n]\n"格式字符串来读取整行用户输入.如果我的理解是正确的,这将读取每个字符,直到到达换行符,然后新行被scanf消耗(并且不包括在结果输入中).

但我不能让这个在我的机器上工作.我试过的一个简单例子:

#include <stdio.h>

int main(void)
{
    char input[64];

    printf("Enter some input: ");
    scanf("%[^\n]\n", input);

    printf("You entered %s\n", input);
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我被提示输入,我输入一些字符,我按Enter键,光标转到下一行的开头,但scanf调用没有完成.

scanf没有完成

我可以随心所欲地按Enter键,但它永远不会完成.

scanf仍未完成

我发现结束scanf调用的唯一方法是:

  • \n在提示符下输入第一个(也是唯一的)字符
  • 输入Ctrl-d作为提示符下的第一个(也是唯一的)字符
  • 输入一些输入,一个或多个\n,零个或多个其他字符,然后输入Ctrl-d

我不知道这是否依赖于机器,但我很想知道发生了什么.我在OS X上,如果那是相关的.

c input scanf

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

Ag.vim:使用光标下的单词作为搜索模式的*part*?

使用Ag.vim插件,您可以通过:Ag不带任何参数调用轻松搜索光标下的单词,但如何将光标下的单词作为搜索模式的一部分包含在内?我正在尝试向我的vimrc添加一些内容来搜索Ruby文件中的方法定义.就像是:

autocmd FileType ruby noremap K :Ag! "\bdef <C-R><C-W>\b"<CR>
Run Code Online (Sandbox Code Playgroud)

它不承认<C-R><C-W>.另外,我都试过\b\<,\>作为单词边界.股份公司使用\b的Vim的范围之外,但我知道它转化\<\>\b在某些情况下(不知道这种情况下,虽然).

vim search

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

在我的系统上哪里可以找到 Ruby 的 parse.y 文件?

我正在阅读有关如何解析和编译 Ruby 的信息,我想查看正在使用的 parse.y 文件。我还没有设法在我的系统(OS X)上的任何地方找到它。我试过find / -name parse.y没有任何运气。

运行ruby -y myfile.rb显示正在使用的 parse.y 中的行号,这让我认为它确实存在于某处,我只是不知道在哪里。我在线查看了parse.y,但我想查看我的本地副本。

例如,给定:

# myfile.rb
puts 'hi'
Run Code Online (Sandbox Code Playgroud)

当我运行时ruby -y myfile.rb,我看到:

Starting parse
Entering state 0
Reducing stack by rule 1 (line 859):
...
Run Code Online (Sandbox Code Playgroud)

我一直假设行号,如上面的 859,指的是 parse.y 中的行。不是这样吗?

ruby parsing bison

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