在Java中,我理解赋值求值为右操作数的值,所以像x == (y = x)evaluate 这样的语句true.
但是,此代码输出false.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?在我的理解中,它首先评估(x = y),分配x值y,然后返回值y.然后x.equals(y)是评估,这应该是true因为x和y现在应该共享相同的引用,而是,我得到false.
这里发生了什么?
我试图声明一个函数,它接受与参数相同类型的函数.
void rec(void(*f)(void(*)(void(*)(...))))
{
f(f);
}
Run Code Online (Sandbox Code Playgroud)
我最终做了递归尝试.
你总是可以从一个演员void*.
void rec(void* f)
{
((void(*)())f)(f);
}
Run Code Online (Sandbox Code Playgroud)
但它不是类型安全的
我尝试用以下方法做到这一点typedef:
typedef void(*RecFunc)(RecFunc);
Run Code Online (Sandbox Code Playgroud)
但是没有编译.
有可能吗?
import java.util.HashMap;
public class Library {
Library() {
}
public void getFinishedBooks(HashMap<String, Boolean> library) {
if(library.size() < 1)
System.out.println("Error! Library is empty.");
else {
for(String book : library.keySet()); {
if((library.get(book)) == true)
System.out.println(library.get(book));
}
}
}
public static void main(String[] args) {
HashMap<String, Boolean> myBooks = new HashMap<String, Boolean>();
myBooks.put("Road Down the Funnel", true);
myBooks.put("Rat: A Biology", false);
myBooks.put("TimeIn", true);
myBooks.put("3D Food Printing", false);
Library myLibrary = new Library();
myLibrary.getFinishedBooks(myBooks);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个基本的图书馆计划.我似乎无法找到导致错误的原因......
错误消息:"错误!找不到符号if((library.get(book))== true)
符号:可变书
位置:类库