小编Mat*_*tyW的帖子

代表在python中

我已经实现了这个简短的例子,试图演示一个简单的委托模式.我的问题是.这看起来像是我理解代表团吗?

class Handler:
    def __init__(self, parent = None):
        self.parent = parent
    def Handle(self, event):
        handler = 'Handle_' +event
        if hasattr(self, handler):
            func = getattr(self, handler)
            func()
        elif self.parent:
            self.parent.Handle(event)

class Geo():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Steve():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Andy():
    def Handle(self, event):
        print 'Andy is handling %s' %(event)

if __name__ == '__main__':        
    a = Andy()
    s …
Run Code Online (Sandbox Code Playgroud)

python delegates design-patterns

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

Java中的基数方向算法

本周末,我花了几分钟时间将一个算法打包在一个标题中(以度为单位)并返回一个String作为基本方向(我在我正在使用的安卓指南针应用程序中使用它).我最终得到的是:

private String headingToString(Float heading)
{
    String strHeading = "?";
    Hashtable<String, Float> cardinal = new Hashtable<String, Float>();
    cardinal.put("North_1", new Float(0));
    cardinal.put("Northeast", new Float(45));
    cardinal.put("East", new Float(90));
    cardinal.put("Southeast", new Float(135));
    cardinal.put("South", new Float(180));
    cardinal.put("Southwest", new Float(225));
    cardinal.put("West", new Float(270));
    cardinal.put("Northwest", new Float(315));
    cardinal.put("North_2", new Float(360));

    for (String key: cardinal.keySet())
    {
        Float value = cardinal.get(key);
        if (Math.abs(heading - value) < 30)
        {
            strHeading = key;
            if (key.contains("North_"))
            {
                strHeading = "North";
            }
            break;
        }
    }
    return strHeading;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是最好的方法吗?虽然我还没有在网上搜索过例子,但它必须已经多次完成.还有其他人试过这个并找到了一个更整洁的解决方案吗?

编辑Reverand的Thilo's,shinjin和Chrstoffer的回复:

解决方案

public …
Run Code Online (Sandbox Code Playgroud)

java algorithm compass-geolocation

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

Ruby中的简单Currying

我正试图在红宝石中做一些讨论:

def add(a,b)
  return a+b
end

plus = lambda {add}
curry_plus = plus.curry
plus_two = curry_plus[2] #Line 24
puts plus_two[3]
Run Code Online (Sandbox Code Playgroud)

我收到了错误

func_test.rb:24:in `[]': wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

来自func_test.rb:24:in''

但如果我这样做

plus = lambda {|a,b| a+ b}
Run Code Online (Sandbox Code Playgroud)

它似乎工作.但是在使用lambda分配后,通过打印加两种方式都返回相同类型的对象.我误解了什么?

ruby currying

12
推荐指数
2
解决办法
4483
查看次数

Joe的Erlang websocket示例的Python示例

我刚刚完成了来自Joe Armstrong博客的erlang websockets示例我仍然是erlang的新手所以我决定在python中编写一个简单的服务器,这将有助于教我webockets(并希望通过解释joe的代码来解释一些erlang) .我有两个问题:

1)我从页面收到的数据包括一个'ÿ'作为最后一个字符.这不会出现在erlang版本中,我无法解决它来自固定的地方 - 这是因为在utf-8和我编码的字符串没有解码它们

2)我似乎是从服务器发送数据(通过websocket) - 可以通过查看client.send()生成的字节数来确认.但页面上没有任何内容出现.修复了,我没有正确编码字符串

我把所有的代码放在这里.这是我的python版本,因为我错过了任何明显的东西

import threading
import socket

def start_server():
    tick = 0
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost', 1234))
    sock.listen(100)
    while True:
        print 'listening...'
        csock, address = sock.accept()
        tick+=1
        print 'connection!' 
        handshake(csock, tick)
        print 'handshaken'
        while True:
            interact(csock, tick)
            tick+=1

def handshake(client, tick):
    our_handshake = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"+"Upgrade:     WebSocket\r\n"+"Connection: Upgrade\r\n"+"WebSocket-Origin:     http://localhost:8888\r\n"+"WebSocket-Location: "+" ws://localhost:1234/websession\r\n\r\n"
    shake = client.recv(255)
    print shake
    client.send(our_handshake)

def interact(client, tick):
    data = …
Run Code Online (Sandbox Code Playgroud)

python websocket

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

如何从Haskell中的Socket读取字节

我正在尝试从Haskell中的套接字读取一些字节.基本上我想做一些与此相当的事情:

client_socket.recv(255) #(Python)
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方式是什么?

sockets networking haskell

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

Haskell中的求和符号

在关于求和的维基百科页面上,它说Haskell中的等效操作是使用foldl.我的问题是:有没有理由说它用这个而不是总和?是一个比另一个更"纯粹",还是没有真正的区别?

math recursion haskell sum

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

缺少必需的layout_width和layout_height属性

我有以下布局xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<item android:id="@+id/descriptions_menu"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:icon="@drawable/ic_menu_info_details"
      android:title="Toggle Descriptions On/ Off" />

<item android:id="@+id/settings_menu"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:icon="@drawable/ic_menu_preferences"
      android:title="Settings" />
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:缺少必需的layout_width和layout_height属性

这是在第2,9,10行报道的.这看起来很奇怪.这是一个旧项目(> 5年),我正试图复活.

android android-layout

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

从NSDateComponents获取MAX_INT

我正在尝试编写我的第一个iPhone应用程序,并且我正在使用日期选择器对象为用户输入他们的出生日期.我的应用程序的一部分需要int格式的年份.我添加了如下代码.奇怪的是'月'得到了正确的价值.但是日和年似乎停留在MAX_INT(2147483647).谁能告诉我我做错了什么?

-(IBAction)dateOfBirthChanged:(id)sender {
    NSCalendar* calender = [NSCalendar currentCalendar];
    NSDateComponents* dateComponents = [calender components:NSMonthCalendarUnit fromDate:[datepicker date]];
    NSInteger day = [dateComponents day];
    NSInteger month = [dateComponents month];
    NSInteger year = [dateComponents year];
    label.text = [NSString stringWithFormat:@"Your year of birth is %d", year];
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c

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

在erlang中`when`保留字

我今天早上开始尝试找出erlang中使用'when'语句的内容.我知道下面的例子是错误的:

do_larger() ->
    io:format("Larger~n").

do_smaller() ->
    io:format("Smaller~n").


when_version(Size) ->
    when Size > 10 -> do_larger(),
    when Size < 10 -> do_smaller().
Run Code Online (Sandbox Code Playgroud)

我决定在Haskell中查看它的实现,看看这是否会有所帮助,最后我变得更加困惑.

是否有人能够指出我的教程(或向我解释)什么时候使用when语句以及它如何在haskell和/或erlang中使用?

erlang

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

这个反转位顺序功能怎么了?

我很惭愧地承认我不太了解比特和位操作,因为我可能应该这样做.我本周末尝试通过写一些"反转位数"和"计数ON位"功能来解决这个问题.我从这里做了一个例子但是当我按照下面的方式实现时,我发现我必须在<29时循环.如果我循环时<32(如示例中)那么当我尝试打印整数时(使用printBits函数)我写过)我似乎错过了前3位.这对我没有意义,有人可以帮助我吗?

感谢大家的帮助,我添加了评论以显示我所做的更改.

int reverse(int n)
{
    int r = 0;
    int i = 0;
    for(i = 0; i < 29; i++) //Should be i < 32
    {
        r = (r << 1) + (n & 1); //| instead of + to make it obvious I'm handling bits
        n >>=1;
    }

    return r;
}
Run Code Online (Sandbox Code Playgroud)

这是我的printBits函数:

void printBits(int n)
{
    int mask = 0X10000000; //unsigned int mask = 0X80000000;
    while (mask)
    {
        if (mask & n)
        {
            printf("1");
        }
        else …
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

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

简单的分布式Erlang

我有一个简单的模块:

-module(dist).
-compile([add/3]).
add(From,X,Y) ->
    From ! X+Y.
Run Code Online (Sandbox Code Playgroud)

我正在启动两个节点.

一个用

erl -sname foo 
Run Code Online (Sandbox Code Playgroud)

和另一个

erl -sname bar
Run Code Online (Sandbox Code Playgroud)

在酒吧节点我正在做:

> c(dist).
{ok,dist}
> self().
<0.37.0>
> spawn('foo@unknown-00-23-6c-83-af-bd', dist, add, [self(), 3, 5]).
Run Code Online (Sandbox Code Playgroud)

但我得到的反应是:

Error in process <0.48.0> on node 'foo@unknown-00-23-6c-83-af-bd' with exit value: {undef,[{dist,add,[<8965.37.0>,3,5]}]}
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?我想知道这是否意味着我的foo节点没有定义这个模块?我不认为它需要它,但问题并没有通过编译foo节点中的dist来解决,所以我猜这不是问题.

erlang distributed

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

Pythonic总结列表和列表列表的方法

我试图在同一个函数中找到一个简单的方法来汇总列表和列表列表,到目前为止我已经得到了:

import operator
"""
 Fails late for item = ['a', 'b']
"""   
def validate(item):
    try:
        return sum(item) == sum(range(1, 10))
    except TypeError:
        return sum(reduce(operator.add, item)) == sum(range(1, 10))

"""
 Not valid for item = [1,2,[3,4,5]]
"""
def validate2(item):
        if isinstance(item[0], int):
            return sum(item) == sum(range(1, 10))
        else:
            return sum(reduce(operator.add, item)) == sum(range(1, 10))


print validate([1, 2, 3, 4, 5, 6, 7, 8, 9])
print validate([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print validate2([1, 2, 3, 4, 5, 6, …
Run Code Online (Sandbox Code Playgroud)

python algorithm

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

在阵列中的位置

我怎么能发现twoVal位于1?

$arr = array('Cool Viski' => array('oneVal' => '169304',
                                   'twoVal' => '166678',
                                   'threeVal' => '45134'));
Run Code Online (Sandbox Code Playgroud)

php arrays

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