배열에 변경 사항 만들기

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

배열의 콘텐츠는 종종 변경해야 하는 경우가 많습니다. 예를 들어, 플레이어의 인벤토리에서 항목을 삭제해야 할 때 사용하기 위해 Lua에는 미리 구축된 함수 가 있습니다.

이 문서에서는 값을 검색하는 방법을 설명하면서 테이블에 대한 미리 빌드 함수를 설명합니다.

이 스킬을 적용하려면 게임에서 플레이어의 인벤토리를 관리하는 스크립트를 생성합니다.

배열에 값 추가

배열에 새 값을 추가하려면 table.insert(array, valueToInsert) 를 사용합니다. 두 번째 매개 변수는 문자열, 숫자 또는 전체 개체와 같은 값을 사용할 수 있습니다. Player 또는 IntValue 와 같은.

연습을 위해 테이블에 플레이어 아이템을 저장한 다음 추가하는 스크립트를 만듭니다. 이 예는 단지 스크립트이므로 모든 파일 또는 프로젝트에 사용할 수 있습니다. 코드를 테스트하는 방법은 출력 창을 사용하여 수행됩니다.

  1. Empty 배열 생성 playerItems .


    playerItems = {}
  2. 배열에 인벤토리 항목을 추가하려면 table.insert() 를 입력하십시오. 부모 따옴표에서 playerItems , 추가할 테이블을 입력하십시오, 각 아이템대한 문자열 다음에 있습니다. 최소 3개의 값을 삽입합니다.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. 프로젝트를 실행합니다. 출력에서 세 점 ...을 확장하여 인쇄된 테이블을 표시합니다.

배열에서 값 제거

값을 제거하려면, 예를 들어 플레이어가 아이템을 사용하거나 활성 플레이어 목록의 플레이어가 경험을 떠나면 table.remove() 를 사용합니다. 제공된 매개 변수에 따라 함수는 테이블의 마지막 값을 제거하거나 특정 인덱스에서 제거할 수 있습니다.

마지막 값 제거

스크립트에서 특정 아이템제거해야 하는 경우가 있습니다. 예를 인스턴스, 플레이어의 인벤토리에서 첫 번째 항목을 제거하거나 첫 번째 플레이어를 목록에서 선택하는 등입니다. 배열의 마지막 값을 제거하려면 table.remove(arrayName) 를 사용합니다. 이 사용 사례에서 필요한 유일한

  1. 이전 예시의 아이템 배열을 사용합니다. 그런 다음 테이블에서 마지막 값을 제거하려면 "Sleeping Bag"을 입력하십시오. 이 경우 table.remove(playerItems)을 입력하십시오.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. 프로젝트를 실행합니다. 출력 창에서 마지막 값, "Sleeping Bag" ,을 표시하지 않아야 합니다.

인덱스로 제거

배열의 특정 위치에서 값을 제거하려면 두 번째 매개 변수 인덱스를 입력하여 제거하십시오, 예를 들어 table.remove(arrayName, 1).

  1. 동일한 테이블을 사용하여 table.remove() 를 입력합니다. 매개 변수에서 테이블 이름을 입력하고 1 를 입력하여 제거할 값을 입력합니다.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. 프로젝트를 실행합니다. "물약"이라는 첫 번째 값이 제거되었는지 확인하십시오.

배열에서 값 검색

배열에서 특정 값을 찾으려면, 플레이어의 이름과 같은 배열의 값을 찾으려면 함수 table.find()를 사용하십시오. 또는 루프 및 for 문을 사용하여 자신의 검색 함수를 코드할 수 있습니다.

단일 값 찾기 및 반환

배열에서 값을 찾으려면 배열을 통과하는 함수를 만들고 첫 번째 일치하는 값을 찾을 때 중지합니다. findValue() 이라는 이름의 함수를 만듭니다.

값을 찾으면 함수는 return 키워드를 사용하여 해당 값의 인덱스를 반환합니다. 인덱스를 사용하면 배열에서 그것을 제거할 수 있습니다.

  1. 아래에 playerItems라는 이름의 배열을 복사합니다.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. 두 매개 변수로 찾아야 하는 새 함수를 findValue() 라는 이름으로 코드합니다.

    • whichArray - 검색할 배열.

    • itemName - 검사할 특정 문자열.


      local function findValue(whichArray, itemName)
      end
  3. In findValue() , use a for loop to check if any value in the array matches itemName . If the value matches, use the keyword return to return the value found in 1> currentIndex1> .


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. valueFound라는 변수를 만들고 findValue()를 호출하여 검색 기능을 테스트하십시오. 배열에 패스하여 검색하고 검색해야 하는 값을 검색하십시오. Run 코드를 실행하여 예상 출력이 인덱스 2인지 확인하십시오.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --현재 인덱스의 값을 반환합니다.
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

값 제거

검색 함수를 사용하여 값이 발견된 경우 해당 값을 제거할 수 있습니다. if 문으로 값이 발견되었는지 확인하십시오.

  1. 값이 valueFound 안에 있는지 확인하십시오; 그렇다면 table.remove() 를 사용하여 값을 제거합니다.


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. 아래 코드를 사용하여 배열을 인쇄하십시오.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. 먼저 첫 번째 "Bread". 다른 값을 제거하려면 findValue()를 변경하십시오.

    이 함수가 한 번만 호출되었기 때문에 "Bread" 제거됩니다. 다음 섹션에서는 모든 인스턴스를 찾고 제거하는 방법을 설명합니다.

특정 값 찾기 및 제거

이전 코드는 찾은 첫 번째 인스턴스만 제거할 수 있지만, 이 코드 스냅은 배열에서 모든 발생

  1. 최소 4개의 값과 세트의 <a href="/reference/engine/databases">duplicates</a> 를 가진 배열 playerItems 을 사용합니다.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. 배열을 통과하려면 playerItems 에서 시작하여 배열을 통과하는 루프를 만듭니다. 배열을 통과하여 1을 증가하고 종료하고 배열을 증가하고 1을 더하십시오.


    for index = #playerItems, 1, -1 do
    end
  3. 루프에서 if 문을 사용하여 값 내 playerItems[index]"Bread" 와 같은지 확인하고, 그렇지 않으면 아이템을 제거합니다.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. 배열을 인쇄하는 두 번째 루프를 위해 아래 코드를 사용하십시오.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. 스크립트를 실행하고 "빵"이라는 이름의 모든 값이 제거되었는지 확인하십시오.

요약

값을 배열에 제거하거나 추가할 수 있지만 인덱싱이 변경되면 주의하십시오. 루프를 사용하여 테이블을 반복하여 모든 값의 인스턴스를 제거하거나 첫 번째 값을 찾은 경우만 제거하십시오.

키워드 return 는 루프를 중지하고 필요할 때 정보를 다시 보낼 수 있습니다.

스크립트의 완성된 버전은 아래에서 참조할 수 있습니다.

다음 프로젝트에는 이 튜토리얼에 있는 모든 스크립트가 포함되어 있습니다. 다운로드 여기 .

모든 스크립트는 ServerScriptService비활성화 에 있습니다. 스크립트를 사용하려면 속성에서 비활성화를 해제하고 Studio를 실행하십시오.