Ocaml 记录和类型定义语法

问题描述

以下两种语法有什么区别。

public class DFS {
    
    private int[][] maze;
    
    public DFS(int[][] maze) {
        
        this.maze = maze;
    }
    
    // Solves given maze recursively,input starting position in maze.
    public boolean solve(int x,int y) {
        
        maze[x][y] = 2;
        
        // 3 is the cell the algorithm is supposed to find.
        if (maze[x][y] == 3) {
            return true;
        }
        
        // Looks up.
        if (x > 0 && maze[x-1][y] == 0  && solve (x-1,y) ) {
            maze[x][y] = 2;
            return true;
        }
        // Looks down
        if (x < maze.length && maze[x+1][y] == 0  && solve (x+1,y) ) {
            maze[x][y] = 2;
            return true;
        }
        // Looks right.
        if (y < maze.length && maze[x][y+1] == 0  && solve (x,y+1) ) {
            maze[x][y] = 2;
            return true;
        }
        // Looks left.
        if (y > 0 && maze[x][y-1] == 0  && solve (x,y-1) ) {
            maze[x][y] = 2;
            return true;
        }
        
        return false;
    }
    
}

我知道第二个是记录,但第一个是什么,我只需要知道一个名字,我可以在线搜索以了解更多信息。

解决方法

第一个定义是对象类型。最显着的区别是对象是结构性的和后期绑定的,而记录是名义上的和早期绑定的。

有关详细信息,请参阅 recordsobjects 的手册条目。