我正在学习一些函数式编程语言,学习感兴趣的东西,现在我正在研究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,但似乎没有工作.
我有一个JavaFX堆积面积图,我想修复添加数据时自动调整的范围.目前,Y轴(只是一个NumberAxis)上升到一个太高的数字:

我尝试通过以下方式降低Y轴的上限:
((NumberAxis)chart.getYAxis()).setUpperBound(2000);
Run Code Online (Sandbox Code Playgroud)
这里chart是一个StackedAreaChart.不幸的是,这似乎没有任何影响.如何在JavaFX图表中设置Y轴的上限?
我有两个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标志的情况下实例化,但这会在运行上述代码时导致空指针异常。滚动条确实需要在那里,我只是希望它不可见。那可能吗?
我有以下中间件:
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。
我试图将十进制整数转换为十六进制.我已经在网上做了很多搜索,并找到了很多方法来做到这一点.但是,我发现的每一种方式都转换为字符串; 例如,我可以将100转换为"64".这不是我需要做的.我希望能够将100转换为'0x64',这是完全不同的事情.出于某种原因,我怀疑答案非常简单,但我似乎无法找到/记住它.我正在编写C编程语言,只是为了澄清.任何帮助或想法将不胜感激.
谢谢,哈桑
我想知道这是否可行.大多数情况下,我想了解GNOME究竟做了什么?鉴于GTK +的可用性,当然还有X11,难道不能只运行应用程序吗?当然,我不确定(这就是为什么我会问这个问题),但我认为GNOME只是"组织"GUI以使其更像桌面,并提供一些工具和实用程序等.这是正确的还是还有更多的东西?
谢谢!
使用Qt在C++中创建的应用程序看起来像Windows,Linux和Mac OS X上的本机应用程序.我正在尝试用Jambi完成同样的事情.这可能吗?我认为用Jambi编写的应用程序太多了,这使得对我未来应用程序的外观有一个准确的印象有点困难.
我可以在没有Qt的情况下使用Java,但是这样做的应用程序看起来也不像本机应用程序,这是我试图避免的.
所以,如果你有明确的是/否答案,一些例子,或者只是任何建议,我很乐意听取你的意见.
我正在尝试以编程方式将三角形的图像全部粘在一起.我认为我接近这个问题的方法是随机选择一些点,然后"连接"它们来制作三角形.问题是我无法想出一个连接它们的好方法.
我要做的一件事就是选择一个随机点开始(第1点),然后找到最近点(第2点),然后"连接"它们.然后,通过选择距离点1和点2的组合距离最小的那个,我找到最接近的第三点.这会给我一个三角形.我可以重复这个,直到我有一堆三角形.这里的问题是三角形将是分开的(它们将不连接).
我愚蠢地过度思考这个吗?有更简单的方法吗?
之前我在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有办法做到这一点吗?
我正在解决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.我在这做错了什么?