小编Has*_*san的帖子

有没有办法在Scala中编写这个Haskell代码?

我正在学习一些函数式编程语言,学习感兴趣的东西,现在我正在研究Scala.我想要做的是弄清楚编写一个函数的最简单方法,该函数调用double一个参数并将其加倍.到目前为止我想出的是:

def double = (x:Int) => x*2
Run Code Online (Sandbox Code Playgroud)

要么

def double(x:Int) = x*2
Run Code Online (Sandbox Code Playgroud)

这有效,但我正在寻找最简单的方法.在Haskell中,我可以简单地这样做:

double = (*2)
Run Code Online (Sandbox Code Playgroud)

因为它是部分应用的函数,所以不需要命名变量或指定任何类型(我确信*函数会处理它).使用Scala有类似的方法吗?我尝试了一些,特别是使用_而不是x,但似乎没有工作.

haskell scala partial-application

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

如何在JavaFX堆积区域图表上调整范围?

我有一个JavaFX堆积面积图,我想修复添加数据时自动调整的范围.目前,Y轴(只是一个NumberAxis)上升到一个太高的数字:

堆积面积图

我尝试通过以下方式降低Y轴的上限:

((NumberAxis)chart.getYAxis()).setUpperBound(2000);
Run Code Online (Sandbox Code Playgroud)

这里chart是一个StackedAreaChart.不幸的是,这似乎没有任何影响.如何在JavaFX图表中设置Y轴的上限?

java charts javafx javafx-2

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

在 SWT 中将 ScrolledComposite 的 ScrollBar 可见性设置为 false

我有两个ScrolledComposites,我正在像这样同步它们的垂直滚动位置:

final ScrollBar vScroll1 = canvasScroll.getVerticalBar();
final ScrollBar vScroll2 = titleScroll.getVerticalBar();

vScroll1.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
        titleScroll.setOrigin(titleScroll.getOrigin().x, canvasScroll.getOrigin().y);
    }
});

vScroll2.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
        canvasScroll.setOrigin(canvasScroll.getOrigin().x, titleScroll.getOrigin().y);
    }
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,除了它显示了两者的滚动条ScrolledComposites。我只希望 oneScrolledComposite的滚动条可见,因此我将其可见性之一设置为 false:

vScroll2.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

这没有效果。我也尝试在ScrolledComposite没有SWT.V_SCROLL标志的情况下实例化,但这会在运行上述代码时导致空指针异常。滚动条确实需要在那里,我只是希望它不可见。那可能吗?

java swt scrolledcomposite

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

如何从 Django 中间件获取用户对象?

我有以下中间件:

class TestMiddleware():
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        print(getattr(request, "user", None))
        return self.get_response(request)
Run Code Online (Sandbox Code Playgroud)

print函数始终打印None. 我django.contrib.auth.middleware.AuthenticationMiddleware在 settings.py 中的行之前和之后都添加了中间件,但在任何一种情况下,我都得到None. 另外,我以用户身份登录。

我还能尝试什么?我正在使用 Django 1.11。

python django

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

如何将十进制整数转换为单个十六进制字符?(C)

我试图将十进制整数转换为十六进制.我已经在网上做了很多搜索,并找到了很多方法来做到这一点.但是,我发现的每一种方式都转换为字符串; 例如,我可以将100转换为"64".这不是我需要做的.我希望能够将100转换为'0x64',这是完全不同的事情.出于某种原因,我怀疑答案非常简单,但我似乎无法找到/记住它.我正在编写C编程语言,只是为了澄清.任何帮助或想法将不胜感激.

谢谢,哈桑

c hex character decimal

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

是否可以在没有GNOME的情况下运行GTK +应用程序?

我想知道这是否可行.大多数情况下,我想了解GNOME究竟做了什么?鉴于GTK +的可用性,当然还有X11,难道不能只运行应用程序吗?当然,我不确定(这就是为什么我会问这个问题),但我认为GNOME只是"组织"GUI以使其更像桌面,并提供一些工具和实用程序等.这是正确的还是还有更多的东西?

谢谢!

linux x11 gtk gnome

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

是否可以使用Jambi制作完全原生的感觉GUI?

使用Qt在C++中创建的应用程序看起来像Windows,Linux和Mac OS X上的本机应用程序.我正在尝试用Jambi完成同样的事情.这可能吗?我认为用Jambi编写的应用程序太多了,这使得对我未来应用程序的外观有一个准确的印象有点困难.

我可以在没有Qt的情况下使用Java,但是这样做的应用程序看起来也不像本机应用程序,这是我试图避免的.

所以,如果你有明确的是/否答案,一些例子,或者只是任何建议,我很乐意听取你的意见.

java qt cross-platform desktop-application qt-jambi

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

如何将点转换为三角形?

我正在尝试以编程方式将三角形的图像全部粘在一起.我认为我接近这个问题的方法是随机选择一些点,然后"连接"它们来制作三角形.问题是我无法想出一个连接它们的好方法.

我要做的一件事就是选择一个随机点开始(第1点),然后找到最近点(第2点),然后"连接"它们.然后,通过选择距离点1和点2的组合距离最小的那个,我找到最接近的第三点.这会给我一个三角形.我可以重复这个,直到我有一堆三角形.这里的问题是三角形将是分开的(它们将不连接).

我愚蠢地过度思考这个吗?有更简单的方法吗?

algorithm image

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

Javascript懒惰评估斐波那契函数

之前我在Scala中使用延迟评估时提出了一个问题.我试图在Scala中编写以下Haskell函数:

fib a b = c : (fib b c)
   where c = a+b
Run Code Online (Sandbox Code Playgroud)

这个问题的答案是我不能使用Lists,而应该使用Streams.现在我想在Javascript中做同样的事情.我翻译了这个功能,并在这个网站上试了一下:

function fib(a,b) {
    c = a+b;
    return [c] + fib(b,c);
}

var res = fib(0,1).slice(0,10);

console.log(res);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

RangeError: Maximum call stack size exceeded
Run Code Online (Sandbox Code Playgroud)

Javascript有办法做到这一点吗?

javascript haskell lazy-evaluation

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

在Clojure中计算一个序列

我正在解决4Clojure网站上的问题22,要求我编写一个计算序列中元素的函数.因为我曾经一度搞过Haskell,所以我知道使用fold它可能就是这样做的方法.在阅读完之后,我已经明白我应该reduce为了同样的目的而使用它.这是我提交的答案:

#(reduce inc 0 %)
Run Code Online (Sandbox Code Playgroud)

这背后的原因是迭代列表,并且inc每次调用最初为0的值.但是,这不起作用.该网站抱怨说"错误的args数量(2)传递给:core $ inc".所以我尝试添加parens inc:

#(reduce (inc) 0 %)
Run Code Online (Sandbox Code Playgroud)

现在它认为零参数正在传递给inc.我在这做错了什么?

clojure

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