小编Eth*_*her的帖子

Python:将此检查重构为自己的方法是否有意义?

我还在学习python.我刚刚编写了这个方法,以确定一个玩家是否赢得了一个井字游戏,给出了一个董事会状态:'[['o','x','x'],['x','o','-'],['x','o','o']]'

def hasWon(board):
  players = ['x', 'o']
  for player in players:
    for row in board:
      if row.count(player) == 3:
        return player
    top, mid, low = board
    for i in range(3):
      if [ top[i],mid[i],low[i] ].count(player) == 3:
        return player
    if [top[0],mid[1],low[2]].count(player) == 3:
        return player
    if [top[2],mid[1],low[0]].count(player) == 3:
        return player
  return None
Run Code Online (Sandbox Code Playgroud)

在我看来,我多次检查3个字符列表,并可以将检查重构为自己的方法,如下所示:

def check(list, player):
  if list.count(player) == 3:
    return player
Run Code Online (Sandbox Code Playgroud)

...但后来意识到所有真正做的就是改变线条:

 if [ top[i],mid[i],low[i] ].count(player) == 3:
    return player
Run Code Online (Sandbox Code Playgroud)

至:

  if check( [top[i],mid[i],low[i]], player ):
    return player …
Run Code Online (Sandbox Code Playgroud)

python refactoring tic-tac-toe

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

安装新模块时dmake实际上在做什么?

我只是在经过多次努力后才重新安装perl/Tk模块.我意识到我不明白dmake或make等实际上在做什么.

我正在使用安装在C:\ strawberry的草莓perl.

Fisrt我将模块解压缩到另一个目录并运行perl makefile.pl,它工作正常.然后我尝试了dmake哪个不起作用.我想那些知道这是如何工作的人会很明显.

当我将模块放置为C:\ strawberry的子目录时,我可以运行perl makefile.pl,dmake,dmake test和dmake install.

我的猜测是dmake install正在向解释器添加一些可执行文件,并且工作模块必须在子目录中.是否有任何文章可以解释它在做什么?

perl strawberry-perl

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

如何将Moose对象转换为JSON以在Catalyst中使用?

我有一系列Moose对象,我希望通过Catalyst :: View :: JSON提供给JSON :: XS.JSON :: XS无法编码有福的数据结构.我知道MooseX :: Storage :: Format :: JSON可以 - 有点 - 做我想做的事; 但是,它似乎相当沉重.我正在寻找的与XXX.pm提供的信息基本相同.我只是想在原始数据结构递归unblessed所以(驱动程序是内部使用)可以显示它.JSON::XSJSON::AnyC:V:JSON

使用Catalyst::View::JSONJSON::XS使用Moose对象的最佳方法是什么?看来我有四个明显的选择:

  1. Catalyst::View::JSON工作与驼鹿对象,通过修补C:V:JSON的阅读freeze和完成的要求,如果曝光的参数是驼鹿对象.
  2. 补丁JSON::XS回退以返回值$obj->freeze if $obj->isa('Moose') && $obj->does('MooseX::Storage::Format::JSON').我应该调查MX:S:F:JSON以确保JSON::Any由代理使用的类MX:S:F:JSON是什么JSON::XS(如果为调用使用JSON::Any的Moose对象选择不同的内部编码器,则不愿意想到错误JSON::XS.
  3. 弄清楚如何递归 - 解禁并让它Catalyst::View::JSON做它的事情.
  4. 完全不要使用Catalyst::View::JSON.只需写入STDOUT $obj->freeze并手动完成请求..这似乎是最hackish.

我确定还有其他一些选择,任何想法?什么是我最好的选择?

perl serialization json moose catalyst

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

如何使用perlbrew在我家安装Perl版本?

我已经安装了perlbrew,这似乎是一个很好的解决方案,但在实际尝试安装一些Perl版本时,我得到了一些毫无意义的错误:

$ perlbrew install perl-5.12.1
Attempting to load conf from /home/dave/perl5/perlbrew/Conf.pm
Fail to get http://search.cpan.org/dist/perl-5.12.1 (error: ) at /home/dave/perl5/perlbrew/bin/perlbrew line 1277.
Run Code Online (Sandbox Code Playgroud)

perl install perlbrew

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

未在mac上设置TERM环境变量

我一直在"未设置TERM环境变量".我在Mac终端上使用svn命令时出错.

我以为我通过以下方式设置了我的个人资料:

export SVN_EDITOR=/usr/bin/nano
export EDITOR=/usr/bin/nano
Run Code Online (Sandbox Code Playgroud)

在.profile和.bash_profile中,重置终端,它仍然给我这个错误.

有帮助吗?

unix macos shell environment

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

为什么`perl Foo.pm`和`perl -I.-mFoo -e1`表现不同?

在Foo.pm中使用此代码:

use strict;
use warnings;
package Foo;

BEGIN {
  $Foo::AUTHORITY = 'cpan:ETHER';
}
1;
Run Code Online (Sandbox Code Playgroud)

将文件作为模块加载不会出错:

$ perl -I. -mFoo -e1
$
Run Code Online (Sandbox Code Playgroud)

然而,直接加载文件会:

$ perl Foo.pm
Name "Foo::AUTHORITY" used only once: possible typo at Foo.pm line 6.
Run Code Online (Sandbox Code Playgroud)

而且,perl -e'require "Foo.pm"'也没有警告.

为什么会出现这种差异?很明显,文件的解析方式不同,但是如何以及为什么?

perl warnings module require

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

简单的TortoiseSVN问题 - 我在哪里实际编辑文件

在完成Tortoise入门教程后,我终于开始了解它,对我来说的困惑是在完成设置过程之后:

1)我创建了我的SVN回购

2)我有我工作的目录,可以说它叫做"我的网站"

3)我使用乌龟来右键点击我的网站并将它们导入我的SVN ...好到目前为止我认为......

4)这就是我认为我迷路的地方,我现在需要右键点击"我的网站"并选择"结账"这样就把一个文件夹放在"我的网站"里面,名为"SVN",里面的"SVN"是从里面复制的文件"我的网站"

我在最后一步做错了吗?我假设现在我可以编辑"我的网站"中的文件,他们会更新,但这不会发生.只有当我在"我的网站/ SVN"内部工作时,他们才真正进行互动.

那么最好是执行步骤1 - 3,但将我的结帐文件夹放在我原来的"我的网站SVN"之外.然后我可以删除旧的"我的网站"文件夹,从现在开始只在"我的网站SVN"中工作?

感谢您对此的任何澄清!

svn tortoisesvn repository

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

C++堆栈溢出 - visual studio 2008

我声明并初始化了一个具有[100] [1000] [1000]个char元素(100MB)的数组,它没有说第一次堆栈溢出.但是当我运行它一段时间后它会抛出一个堆栈溢出异常!我在项目选项 - >链接器 - >系统中将-Stack Reserve Size-增加到200,000,000,但它没有用!我正在使用2GB Ram.How我如何避免堆栈溢出.

c++ stack-overflow visual-studio-2008

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

Subversion - 在没有检查的情况下引用项目?

我喜欢谷歌这个(我已经尝试过),但我不确定它叫什么,更不用说怎么做了.

考虑:

project A
project B
Run Code Online (Sandbox Code Playgroud)

我正在研究项目A,这恰好需要项目B.我如何在没有用项目A检查项目B的情况下,引用它?

换句话说,有一种方法(我在放置时经历过)允许您在项目中使用项目,如果有人要更新该项目,您将获得更改.基本上它意味着你不必担心过时或管理两份东西.

没有必要(但如果你能/想要)解释,只需一个链接或名称就可以解决问题.

干杯.

svn

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

Perl Regexes - 替换某些匹配实例

我正在尝试替换源文件中的文本,就像C预处理器的工作方式一样.我的方法是解析常量及其值,并用它们填充哈希数组.我的问题如下:

在源文件中,我有:

#define CONSTANT 10
#define CONSTANT_PLUS_ONE CONSTANT + 1
Run Code Online (Sandbox Code Playgroud)

/^#define\s+(\w.*)\s+.*($key).*/用来匹配第二行,但当我替换时s/$2/$defines{$key}/,两个CONSTANT实例都被替换,即

#define CONSTANT 10
#define 10_PLUS_ONE 10 + 1
Run Code Online (Sandbox Code Playgroud)

我是一个Perl新手,所以我希望有人可以指出我正确的方向,或者如果我犯了一个明显愚蠢的错误.

regex perl

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