cryptozombies 为什么在比较中使用 keccak

cryptozombies why use keccak in comparing

我已经在学习密码僵尸教程的第 2 课第 13 章了。在 feedAndMultiply 函数中,为什么他们使用 keccak 来比较 Kitty 而不是确切的字符。

if (keccak256(_species) == keccak256("kitty"))   

为什么不

if (_species == "kitty") ?

== 运算符仅支持布尔值、整数、定点数(启动对定点数的支持后)、地址和静态字节数组。 Solidity 支持 == 动态数组(string 支持)。为了解决这个问题,他们只是简单地获取两个字符串的哈希值,然后比较结果。

Types page in the Solidity docs 概述了每种类型支持的所有操作。