我遇到了一个有趣的问题,并想知道是否以及如何在Java中完成:创建一个可以记住任何函数/方法的方法.该方法具有以下参数:方法/函数及其参数.
例如,假设我有这种方法:
int addOne(int a) { return a + 1;}
Run Code Online (Sandbox Code Playgroud)
并且我使用相同的参数调用我的memoization方法两次:例如addOne和5,第一个调用应该实际调用addOne方法并返回结果并且还存储该给定参数的结果.第二次我打电话的时候应该知道之前已经打过电话,只是查看上一个答案.
我的想法是有一个类似于HashMap<Callable,HashMap<List<Objects>,Object>>你将存储以前的答案并在以后查找它们的地方.我认为这可以用lambda表达式以某种方式完成但我不熟悉它们.我不太确定写这个方法,并希望得到一些帮助.
这可以通过这种方法完成吗?
我的 Makefile 中的一行遇到以下问题:
echo 'include $(BASE)/Makefile.base' > file
Run Code Online (Sandbox Code Playgroud)
如果我直接将其写入控制台,它实际上会将“include $(BASE)/Makefile.base”打印到文件中,但是当在 Makefile 中使用它时,$(BASE) 总是会被替换为空白,我希望它按字面意思写入到文件中。我尝试了多种写法,但似乎找不到正确的方法......
我有一个包含以下行的文件:
121<some letters> random text ...
1234<some letters> random numbers etc...
Run Code Online (Sandbox Code Playgroud)
每行以一个数字开头,后跟一些字母。我正在寻找一种方法来仅选择在特定间隔中以数字开头的行,例如: [0-9999] 。如果位数可能会有所不同,我很难选择这些行。
尝试使用 grep 但似乎无法找到编写正则表达式的正确方法。
以下cat命令似乎在for循环之外正常工作但是当我将它置于其中时会出现语法错误:
for i in 1 2 3 4 5 do
cat file_$i | grep "random text" | cut -d':' -f2 > temp_$i
done
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释写这个的正确方法吗?谢谢