我有一个代码
def pitch_class(note)
note_hash = {:C=>0, :D=>2, :E=>4, :F=>5, :G=>7, :A=>9, :B=>11}
note_hash[:note]
end
但每当我尝试调用其中的值时,返回nil。
pitch_class("C")
#=> nil
如何使用键作为参数调用值? 谢谢!
答案 0 :(得分:6)
<html >
<head>
<title></title>
</head>
<body>
<?php
print ("<form action='' method='post'>
<p>Username
<input type='text' name='username' />
</p>
<p>Password
<input type='password' name='password' >
<p/>
<input type='submit' value='Log In'/>
</form>");
if(isset($_POST)) {
if( !($database=mysql_connect("localhost","root",""))||!(mysql_select_db("st_login",$database)) )
print("Could not connect");
if(isset($_POST['username'])&&isset($_POST['password']) )
{
$username=$_POST['username'];
$password=md5($_POST['password']);
if ( !empty($username) &&!empty($password) )
{
$query = " SELECT * FROM `login` WHERE `username`='$username' AND `password`='$password'";
if($result=mysql_query($query,$database))
{
$user=mysql_fetch_assoc($result);
if($user==false){
echo "invalid username";
}
elseif($user['admin']==1){
echo"admin is logged in";
header("Location: admin.php");
}
elseif($user['approval']==1) {
$_POST['user']=$user['username'];
echo "user is logged in";
header("Location: faqja2.php");
}
else{
echo "Your account is'nt approved by admin yet";
}}
die (mysql_error());
}
else echo "Fill in all blank fields";
}
}
?>
</body>
</html>
。因此,"C" != :C
将有效。
如果您希望能够接受字符串参数,也可以使用pitch_class(:C)
强制函数内部的参数。或者您可以首先使用字符串键创建哈希。
编辑:此外,String#to_sym
不是:note
。
EDIT2:作为性能调整,我宁愿在方法之外声明note
,而不是每次调用方法时都将其实例化。将它填入类常量(note_hash
)将是处理它的最佳方法。
答案 1 :(得分:3)
您硬编码InputStreamReader
符号而不是读取传递给您的方法的参数:
:note